@tsonic/frontend 0.0.13 → 0.0.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -1
- package/dist/graph/builder.js +2 -2
- package/dist/graph/builder.js.map +1 -1
- package/dist/graph/extraction/imports.js +1 -1
- package/dist/graph/extraction/imports.js.map +1 -1
- package/dist/graph/extraction/orchestrator.d.ts.map +1 -1
- package/dist/graph/extraction/orchestrator.js +1 -1
- package/dist/graph/extraction/orchestrator.js.map +1 -1
- package/dist/ir/binding/index.d.ts +134 -0
- package/dist/ir/binding/index.d.ts.map +1 -0
- package/dist/ir/binding/index.js +725 -0
- package/dist/ir/binding/index.js.map +1 -0
- package/dist/ir/binding-resolution.test.js +193 -52
- package/dist/ir/binding-resolution.test.js.map +1 -1
- package/dist/ir/builder/exports.d.ts +20 -2
- package/dist/ir/builder/exports.d.ts.map +1 -1
- package/dist/ir/builder/exports.js +65 -6
- package/dist/ir/builder/exports.js.map +1 -1
- package/dist/ir/builder/imports.d.ts +9 -5
- package/dist/ir/builder/imports.d.ts.map +1 -1
- package/dist/ir/builder/imports.js +20 -31
- package/dist/ir/builder/imports.js.map +1 -1
- package/dist/ir/builder/orchestrator.d.ts +10 -1
- package/dist/ir/builder/orchestrator.d.ts.map +1 -1
- package/dist/ir/builder/orchestrator.js +25 -14
- package/dist/ir/builder/orchestrator.js.map +1 -1
- package/dist/ir/builder/statements.d.ts +7 -1
- package/dist/ir/builder/statements.d.ts.map +1 -1
- package/dist/ir/builder/statements.js +7 -2
- package/dist/ir/builder/statements.js.map +1 -1
- package/dist/ir/builder/types.d.ts +3 -0
- package/dist/ir/builder/types.d.ts.map +1 -1
- package/dist/ir/builder/validation.d.ts +4 -1
- package/dist/ir/builder/validation.d.ts.map +1 -1
- package/dist/ir/builder/validation.js +37 -37
- package/dist/ir/builder/validation.js.map +1 -1
- package/dist/ir/builder.test.js +54 -111
- package/dist/ir/builder.test.js.map +1 -1
- package/dist/ir/clr-type-mappings.d.ts +42 -0
- package/dist/ir/clr-type-mappings.d.ts.map +1 -0
- package/dist/ir/clr-type-mappings.js +139 -0
- package/dist/ir/clr-type-mappings.js.map +1 -0
- package/dist/ir/converters/anonymous-synthesis.d.ts +30 -8
- package/dist/ir/converters/anonymous-synthesis.d.ts.map +1 -1
- package/dist/ir/converters/anonymous-synthesis.js +46 -55
- package/dist/ir/converters/anonymous-synthesis.js.map +1 -1
- package/dist/ir/converters/context.d.ts +40 -0
- package/dist/ir/converters/context.d.ts.map +1 -0
- package/dist/ir/converters/context.js +24 -0
- package/dist/ir/converters/context.js.map +1 -0
- package/dist/ir/converters/expressions/access.d.ts +6 -1
- package/dist/ir/converters/expressions/access.d.ts.map +1 -1
- package/dist/ir/converters/expressions/access.js +239 -15
- package/dist/ir/converters/expressions/access.js.map +1 -1
- package/dist/ir/converters/expressions/calls.d.ts +24 -3
- package/dist/ir/converters/expressions/calls.d.ts.map +1 -1
- package/dist/ir/converters/expressions/calls.js +450 -385
- package/dist/ir/converters/expressions/calls.js.map +1 -1
- package/dist/ir/converters/expressions/collections.d.ts +16 -3
- package/dist/ir/converters/expressions/collections.d.ts.map +1 -1
- package/dist/ir/converters/expressions/collections.js +300 -46
- package/dist/ir/converters/expressions/collections.js.map +1 -1
- package/dist/ir/converters/expressions/functions.d.ts +10 -3
- package/dist/ir/converters/expressions/functions.d.ts.map +1 -1
- package/dist/ir/converters/expressions/functions.js +140 -32
- package/dist/ir/converters/expressions/functions.js.map +1 -1
- package/dist/ir/converters/expressions/helpers.d.ts +22 -23
- package/dist/ir/converters/expressions/helpers.d.ts.map +1 -1
- package/dist/ir/converters/expressions/helpers.js +242 -239
- package/dist/ir/converters/expressions/helpers.js.map +1 -1
- package/dist/ir/converters/expressions/index.d.ts +1 -1
- package/dist/ir/converters/expressions/index.d.ts.map +1 -1
- package/dist/ir/converters/expressions/index.js +1 -1
- package/dist/ir/converters/expressions/index.js.map +1 -1
- package/dist/ir/converters/expressions/literals.d.ts +12 -12
- package/dist/ir/converters/expressions/literals.d.ts.map +1 -1
- package/dist/ir/converters/expressions/literals.js +62 -17
- package/dist/ir/converters/expressions/literals.js.map +1 -1
- package/dist/ir/converters/expressions/numeric-recovery.test.d.ts +5 -2
- package/dist/ir/converters/expressions/numeric-recovery.test.d.ts.map +1 -1
- package/dist/ir/converters/expressions/numeric-recovery.test.js +62 -49
- package/dist/ir/converters/expressions/numeric-recovery.test.js.map +1 -1
- package/dist/ir/converters/expressions/operators.d.ts +13 -4
- package/dist/ir/converters/expressions/operators.d.ts.map +1 -1
- package/dist/ir/converters/expressions/operators.js +179 -33
- package/dist/ir/converters/expressions/operators.js.map +1 -1
- package/dist/ir/converters/expressions/other.d.ts +11 -3
- package/dist/ir/converters/expressions/other.d.ts.map +1 -1
- package/dist/ir/converters/expressions/other.js +26 -10
- package/dist/ir/converters/expressions/other.js.map +1 -1
- package/dist/ir/converters/statements/control/blocks.d.ts +8 -2
- package/dist/ir/converters/statements/control/blocks.d.ts.map +1 -1
- package/dist/ir/converters/statements/control/blocks.js +7 -2
- package/dist/ir/converters/statements/control/blocks.js.map +1 -1
- package/dist/ir/converters/statements/control/conditionals.d.ts +14 -4
- package/dist/ir/converters/statements/control/conditionals.d.ts.map +1 -1
- package/dist/ir/converters/statements/control/conditionals.js +19 -10
- package/dist/ir/converters/statements/control/conditionals.js.map +1 -1
- package/dist/ir/converters/statements/control/exceptions.d.ts +10 -3
- package/dist/ir/converters/statements/control/exceptions.d.ts.map +1 -1
- package/dist/ir/converters/statements/control/exceptions.js +13 -7
- package/dist/ir/converters/statements/control/exceptions.js.map +1 -1
- package/dist/ir/converters/statements/control/loops.d.ts +16 -5
- package/dist/ir/converters/statements/control/loops.d.ts.map +1 -1
- package/dist/ir/converters/statements/control/loops.js +25 -15
- package/dist/ir/converters/statements/control/loops.js.map +1 -1
- package/dist/ir/converters/statements/declarations/classes/constructors.d.ts +3 -2
- package/dist/ir/converters/statements/declarations/classes/constructors.d.ts.map +1 -1
- package/dist/ir/converters/statements/declarations/classes/constructors.js +11 -7
- package/dist/ir/converters/statements/declarations/classes/constructors.js.map +1 -1
- package/dist/ir/converters/statements/declarations/classes/methods.d.ts +2 -1
- package/dist/ir/converters/statements/declarations/classes/methods.d.ts.map +1 -1
- package/dist/ir/converters/statements/declarations/classes/methods.js +63 -11
- package/dist/ir/converters/statements/declarations/classes/methods.js.map +1 -1
- package/dist/ir/converters/statements/declarations/classes/orchestrator.d.ts +2 -1
- package/dist/ir/converters/statements/declarations/classes/orchestrator.d.ts.map +1 -1
- package/dist/ir/converters/statements/declarations/classes/orchestrator.js +60 -40
- package/dist/ir/converters/statements/declarations/classes/orchestrator.js.map +1 -1
- package/dist/ir/converters/statements/declarations/classes/override-detection.d.ts +6 -2
- package/dist/ir/converters/statements/declarations/classes/override-detection.d.ts.map +1 -1
- package/dist/ir/converters/statements/declarations/classes/override-detection.js +49 -50
- package/dist/ir/converters/statements/declarations/classes/override-detection.js.map +1 -1
- package/dist/ir/converters/statements/declarations/classes/properties.d.ts +9 -1
- package/dist/ir/converters/statements/declarations/classes/properties.d.ts.map +1 -1
- package/dist/ir/converters/statements/declarations/classes/properties.js +119 -16
- package/dist/ir/converters/statements/declarations/classes/properties.js.map +1 -1
- package/dist/ir/converters/statements/declarations/enums.d.ts +2 -1
- package/dist/ir/converters/statements/declarations/enums.d.ts.map +1 -1
- package/dist/ir/converters/statements/declarations/enums.js +8 -2
- package/dist/ir/converters/statements/declarations/enums.js.map +1 -1
- package/dist/ir/converters/statements/declarations/functions.d.ts +2 -1
- package/dist/ir/converters/statements/declarations/functions.d.ts.map +1 -1
- package/dist/ir/converters/statements/declarations/functions.js +11 -6
- package/dist/ir/converters/statements/declarations/functions.js.map +1 -1
- package/dist/ir/converters/statements/declarations/index.d.ts +3 -1
- package/dist/ir/converters/statements/declarations/index.d.ts.map +1 -1
- package/dist/ir/converters/statements/declarations/index.js +3 -1
- package/dist/ir/converters/statements/declarations/index.js.map +1 -1
- package/dist/ir/converters/statements/declarations/interfaces.d.ts +3 -2
- package/dist/ir/converters/statements/declarations/interfaces.d.ts.map +1 -1
- package/dist/ir/converters/statements/declarations/interfaces.js +26 -20
- package/dist/ir/converters/statements/declarations/interfaces.js.map +1 -1
- package/dist/ir/converters/statements/declarations/registry.d.ts +72 -0
- package/dist/ir/converters/statements/declarations/registry.d.ts.map +1 -1
- package/dist/ir/converters/statements/declarations/registry.js +92 -0
- package/dist/ir/converters/statements/declarations/registry.js.map +1 -1
- package/dist/ir/converters/statements/declarations/type-aliases.d.ts +2 -1
- package/dist/ir/converters/statements/declarations/type-aliases.d.ts.map +1 -1
- package/dist/ir/converters/statements/declarations/type-aliases.js +6 -4
- package/dist/ir/converters/statements/declarations/type-aliases.js.map +1 -1
- package/dist/ir/converters/statements/declarations/variables.d.ts +11 -1
- package/dist/ir/converters/statements/declarations/variables.d.ts.map +1 -1
- package/dist/ir/converters/statements/declarations/variables.js +123 -19
- package/dist/ir/converters/statements/declarations/variables.js.map +1 -1
- package/dist/ir/converters/statements/declarations.d.ts +4 -1
- package/dist/ir/converters/statements/declarations.d.ts.map +1 -1
- package/dist/ir/converters/statements/declarations.js +4 -1
- package/dist/ir/converters/statements/declarations.js.map +1 -1
- package/dist/ir/converters/statements/helpers.d.ts +4 -3
- package/dist/ir/converters/statements/helpers.d.ts.map +1 -1
- package/dist/ir/converters/statements/helpers.js +55 -31
- package/dist/ir/converters/statements/helpers.js.map +1 -1
- package/dist/ir/converters/statements/index.d.ts +1 -1
- package/dist/ir/converters/statements/index.d.ts.map +1 -1
- package/dist/ir/converters/statements/index.js +2 -1
- package/dist/ir/converters/statements/index.js.map +1 -1
- package/dist/ir/expression-converter.d.ts +10 -3
- package/dist/ir/expression-converter.d.ts.map +1 -1
- package/dist/ir/expression-converter.js +150 -56
- package/dist/ir/expression-converter.js.map +1 -1
- package/dist/ir/hierarchical-bindings-e2e.test.js +10 -6
- package/dist/ir/hierarchical-bindings-e2e.test.js.map +1 -1
- package/dist/ir/index.d.ts +5 -0
- package/dist/ir/index.d.ts.map +1 -1
- package/dist/ir/index.js +5 -0
- package/dist/ir/index.js.map +1 -1
- package/dist/ir/no-ts-type-inference.test.d.ts +17 -0
- package/dist/ir/no-ts-type-inference.test.d.ts.map +1 -0
- package/dist/ir/no-ts-type-inference.test.js +171 -0
- package/dist/ir/no-ts-type-inference.test.js.map +1 -0
- package/dist/ir/program-context.d.ts +74 -0
- package/dist/ir/program-context.d.ts.map +1 -0
- package/dist/ir/program-context.js +286 -0
- package/dist/ir/program-context.js.map +1 -0
- package/dist/ir/statement-converter.d.ts +14 -4
- package/dist/ir/statement-converter.d.ts.map +1 -1
- package/dist/ir/statement-converter.js +31 -21
- package/dist/ir/statement-converter.js.map +1 -1
- package/dist/ir/syntax/binding-patterns.d.ts +22 -0
- package/dist/ir/syntax/binding-patterns.d.ts.map +1 -0
- package/dist/ir/syntax/binding-patterns.js +92 -0
- package/dist/ir/syntax/binding-patterns.js.map +1 -0
- package/dist/ir/thisarg-inference.test.d.ts +8 -0
- package/dist/ir/thisarg-inference.test.d.ts.map +1 -0
- package/dist/ir/thisarg-inference.test.js +94 -0
- package/dist/ir/thisarg-inference.test.js.map +1 -0
- package/dist/ir/type-converter.d.ts +5 -2
- package/dist/ir/type-converter.d.ts.map +1 -1
- package/dist/ir/type-converter.js +5 -2
- package/dist/ir/type-converter.js.map +1 -1
- package/dist/ir/type-system/core.d.ts +29 -0
- package/dist/ir/type-system/core.d.ts.map +1 -0
- package/dist/ir/type-system/core.js +456 -0
- package/dist/ir/type-system/core.js.map +1 -0
- package/dist/ir/type-system/index.d.ts +21 -0
- package/dist/ir/type-system/index.d.ts.map +1 -0
- package/dist/ir/type-system/index.js +43 -0
- package/dist/ir/type-system/index.js.map +1 -0
- package/dist/ir/type-system/internal/handle-types.d.ts +98 -0
- package/dist/ir/type-system/internal/handle-types.d.ts.map +1 -0
- package/dist/ir/type-system/internal/handle-types.js +13 -0
- package/dist/ir/type-system/internal/handle-types.js.map +1 -0
- package/dist/ir/type-system/internal/nominal-env.d.ts +66 -0
- package/dist/ir/type-system/internal/nominal-env.d.ts.map +1 -0
- package/dist/ir/type-system/internal/nominal-env.js +301 -0
- package/dist/ir/type-system/internal/nominal-env.js.map +1 -0
- package/dist/ir/type-system/internal/type-converter/arrays.d.ts +11 -0
- package/dist/ir/type-system/internal/type-converter/arrays.d.ts.map +1 -0
- package/dist/ir/{type-converter → type-system/internal/type-converter}/arrays.js +2 -2
- package/dist/ir/type-system/internal/type-converter/arrays.js.map +1 -0
- package/dist/ir/type-system/internal/type-converter/converter.d.ts +17 -0
- package/dist/ir/type-system/internal/type-converter/converter.d.ts.map +1 -0
- package/dist/ir/type-system/internal/type-converter/converter.js +16 -0
- package/dist/ir/type-system/internal/type-converter/converter.js.map +1 -0
- package/dist/ir/type-system/internal/type-converter/functions.d.ts +14 -0
- package/dist/ir/type-system/internal/type-converter/functions.d.ts.map +1 -0
- package/dist/ir/type-system/internal/type-converter/functions.js +66 -0
- package/dist/ir/type-system/internal/type-converter/functions.js.map +1 -0
- package/dist/ir/type-system/internal/type-converter/index.d.ts +11 -0
- package/dist/ir/type-system/internal/type-converter/index.d.ts.map +1 -0
- package/dist/ir/type-system/internal/type-converter/index.js +11 -0
- package/dist/ir/type-system/internal/type-converter/index.js.map +1 -0
- package/dist/ir/type-system/internal/type-converter/inference.d.ts +37 -0
- package/dist/ir/type-system/internal/type-converter/inference.d.ts.map +1 -0
- package/dist/ir/type-system/internal/type-converter/inference.js +32 -0
- package/dist/ir/type-system/internal/type-converter/inference.js.map +1 -0
- package/dist/ir/{type-converter → type-system/internal/type-converter}/literals.d.ts +1 -1
- package/dist/ir/type-system/internal/type-converter/literals.d.ts.map +1 -0
- package/dist/ir/type-system/internal/type-converter/literals.js.map +1 -0
- package/dist/ir/type-system/internal/type-converter/objects.d.ts +20 -0
- package/dist/ir/type-system/internal/type-converter/objects.d.ts.map +1 -0
- package/dist/ir/{type-converter → type-system/internal/type-converter}/objects.js +56 -6
- package/dist/ir/type-system/internal/type-converter/objects.js.map +1 -0
- package/dist/ir/{type-converter → type-system/internal/type-converter}/orchestrator.d.ts +3 -2
- package/dist/ir/type-system/internal/type-converter/orchestrator.d.ts.map +1 -0
- package/dist/ir/{type-converter → type-system/internal/type-converter}/orchestrator.js +63 -21
- package/dist/ir/type-system/internal/type-converter/orchestrator.js.map +1 -0
- package/dist/ir/type-system/internal/type-converter/patterns.d.ts +12 -0
- package/dist/ir/type-system/internal/type-converter/patterns.d.ts.map +1 -0
- package/dist/ir/{type-converter → type-system/internal/type-converter}/patterns.js +22 -6
- package/dist/ir/type-system/internal/type-converter/patterns.js.map +1 -0
- package/dist/ir/{type-converter → type-system/internal/type-converter}/primitives.d.ts +1 -1
- package/dist/ir/type-system/internal/type-converter/primitives.d.ts.map +1 -0
- package/dist/ir/type-system/internal/type-converter/primitives.js.map +1 -0
- package/dist/ir/{type-converter → type-system/internal/type-converter}/references.d.ts +3 -2
- package/dist/ir/type-system/internal/type-converter/references.d.ts.map +1 -0
- package/dist/ir/type-system/internal/type-converter/references.js +551 -0
- package/dist/ir/type-system/internal/type-converter/references.js.map +1 -0
- package/dist/ir/type-system/internal/type-converter/unions-intersections.d.ts +15 -0
- package/dist/ir/type-system/internal/type-converter/unions-intersections.d.ts.map +1 -0
- package/dist/ir/type-system/internal/type-converter/unions-intersections.js +22 -0
- package/dist/ir/type-system/internal/type-converter/unions-intersections.js.map +1 -0
- package/dist/ir/{type-converter → type-system/internal/type-converter}/utility-types.d.ts +23 -36
- package/dist/ir/type-system/internal/type-converter/utility-types.d.ts.map +1 -0
- package/dist/ir/type-system/internal/type-converter/utility-types.js +879 -0
- package/dist/ir/type-system/internal/type-converter/utility-types.js.map +1 -0
- package/dist/ir/type-system/internal/type-converter/utility-types.test.d.ts.map +1 -0
- package/dist/ir/{type-converter → type-system/internal/type-converter}/utility-types.test.js +398 -120
- package/dist/ir/type-system/internal/type-converter/utility-types.test.js.map +1 -0
- package/dist/ir/type-system/internal/type-converter.d.ts +9 -0
- package/dist/ir/type-system/internal/type-converter.d.ts.map +1 -0
- package/dist/ir/type-system/internal/type-converter.js +9 -0
- package/dist/ir/type-system/internal/type-converter.js.map +1 -0
- package/dist/ir/type-system/internal/type-registry.d.ts +107 -0
- package/dist/ir/type-system/internal/type-registry.d.ts.map +1 -0
- package/dist/ir/type-system/internal/type-registry.js +534 -0
- package/dist/ir/type-system/internal/type-registry.js.map +1 -0
- package/dist/ir/type-system/internal/universe/alias-table.d.ts +92 -0
- package/dist/ir/type-system/internal/universe/alias-table.d.ts.map +1 -0
- package/dist/ir/type-system/internal/universe/alias-table.js +222 -0
- package/dist/ir/type-system/internal/universe/alias-table.js.map +1 -0
- package/dist/ir/type-system/internal/universe/clr-catalog.d.ts +44 -0
- package/dist/ir/type-system/internal/universe/clr-catalog.d.ts.map +1 -0
- package/dist/ir/type-system/internal/universe/clr-catalog.js +1176 -0
- package/dist/ir/type-system/internal/universe/clr-catalog.js.map +1 -0
- package/dist/ir/type-system/internal/universe/index.d.ts +26 -0
- package/dist/ir/type-system/internal/universe/index.d.ts.map +1 -0
- package/dist/ir/type-system/internal/universe/index.js +30 -0
- package/dist/ir/type-system/internal/universe/index.js.map +1 -0
- package/dist/ir/type-system/internal/universe/resolution.d.ts +115 -0
- package/dist/ir/type-system/internal/universe/resolution.d.ts.map +1 -0
- package/dist/ir/type-system/internal/universe/resolution.js +181 -0
- package/dist/ir/type-system/internal/universe/resolution.js.map +1 -0
- package/dist/ir/type-system/internal/universe/source-catalog.d.ts +62 -0
- package/dist/ir/type-system/internal/universe/source-catalog.d.ts.map +1 -0
- package/dist/ir/type-system/internal/universe/source-catalog.js +91 -0
- package/dist/ir/type-system/internal/universe/source-catalog.js.map +1 -0
- package/dist/ir/type-system/internal/universe/types.d.ts +436 -0
- package/dist/ir/type-system/internal/universe/types.d.ts.map +1 -0
- package/dist/ir/type-system/internal/universe/types.js +69 -0
- package/dist/ir/type-system/internal/universe/types.js.map +1 -0
- package/dist/ir/type-system/internal/universe/unified-universe.d.ts +70 -0
- package/dist/ir/type-system/internal/universe/unified-universe.d.ts.map +1 -0
- package/dist/ir/type-system/internal/universe/unified-universe.js +319 -0
- package/dist/ir/type-system/internal/universe/unified-universe.js.map +1 -0
- package/dist/ir/type-system/type-system.d.ts +617 -0
- package/dist/ir/type-system/type-system.d.ts.map +1 -0
- package/dist/ir/type-system/type-system.js +2420 -0
- package/dist/ir/type-system/type-system.js.map +1 -0
- package/dist/ir/type-system/types.d.ts +176 -0
- package/dist/ir/type-system/types.d.ts.map +1 -0
- package/dist/ir/type-system/types.js +80 -0
- package/dist/ir/type-system/types.js.map +1 -0
- package/dist/ir/type-universe/assembly-catalog.d.ts +44 -0
- package/dist/ir/type-universe/assembly-catalog.d.ts.map +1 -0
- package/dist/ir/type-universe/assembly-catalog.js +532 -0
- package/dist/ir/type-universe/assembly-catalog.js.map +1 -0
- package/dist/ir/type-universe/assembly-catalog.test.d.ts +7 -0
- package/dist/ir/type-universe/assembly-catalog.test.d.ts.map +1 -0
- package/dist/ir/type-universe/assembly-catalog.test.js +105 -0
- package/dist/ir/type-universe/assembly-catalog.test.js.map +1 -0
- package/dist/ir/type-universe/index.d.ts +19 -0
- package/dist/ir/type-universe/index.d.ts.map +1 -0
- package/dist/ir/type-universe/index.js +21 -0
- package/dist/ir/type-universe/index.js.map +1 -0
- package/dist/ir/type-universe/types.d.ts +436 -0
- package/dist/ir/type-universe/types.d.ts.map +1 -0
- package/dist/ir/type-universe/types.js +69 -0
- package/dist/ir/type-universe/types.js.map +1 -0
- package/dist/ir/type-universe/unified-catalog.d.ts +70 -0
- package/dist/ir/type-universe/unified-catalog.d.ts.map +1 -0
- package/dist/ir/type-universe/unified-catalog.js +319 -0
- package/dist/ir/type-universe/unified-catalog.js.map +1 -0
- package/dist/ir/type-universe/unified-catalog.test.d.ts +7 -0
- package/dist/ir/type-universe/unified-catalog.test.d.ts.map +1 -0
- package/dist/ir/type-universe/unified-catalog.test.js +135 -0
- package/dist/ir/type-universe/unified-catalog.test.js.map +1 -0
- package/dist/ir/types/expressions.d.ts +74 -2
- package/dist/ir/types/expressions.d.ts.map +1 -1
- package/dist/ir/types/helpers.d.ts +22 -2
- package/dist/ir/types/helpers.d.ts.map +1 -1
- package/dist/ir/types/index.d.ts +4 -2
- package/dist/ir/types/index.d.ts.map +1 -1
- package/dist/ir/types/index.js +1 -0
- package/dist/ir/types/index.js.map +1 -1
- package/dist/ir/types/ir-substitution.d.ts +144 -0
- package/dist/ir/types/ir-substitution.d.ts.map +1 -0
- package/dist/ir/types/ir-substitution.js +569 -0
- package/dist/ir/types/ir-substitution.js.map +1 -0
- package/dist/ir/types/ir-types.d.ts +9 -3
- package/dist/ir/types/ir-types.d.ts.map +1 -1
- package/dist/ir/types/numeric-helpers.d.ts +2 -1
- package/dist/ir/types/numeric-helpers.d.ts.map +1 -1
- package/dist/ir/types/numeric-helpers.js +9 -3
- package/dist/ir/types/numeric-helpers.js.map +1 -1
- package/dist/ir/types/statements.d.ts +13 -1
- package/dist/ir/types/statements.d.ts.map +1 -1
- package/dist/ir/types.d.ts +1 -1
- package/dist/ir/types.d.ts.map +1 -1
- package/dist/ir/types.js.map +1 -1
- package/dist/ir/validation/anonymous-type-lowering-pass.d.ts.map +1 -1
- package/dist/ir/validation/anonymous-type-lowering-pass.js +165 -7
- package/dist/ir/validation/anonymous-type-lowering-pass.js.map +1 -1
- package/dist/ir/validation/arrow-return-finalization-pass.d.ts +28 -0
- package/dist/ir/validation/arrow-return-finalization-pass.d.ts.map +1 -0
- package/dist/ir/validation/arrow-return-finalization-pass.js +416 -0
- package/dist/ir/validation/arrow-return-finalization-pass.js.map +1 -0
- package/dist/ir/validation/attribute-collection-pass.d.ts.map +1 -1
- package/dist/ir/validation/attribute-collection-pass.js +40 -6
- package/dist/ir/validation/attribute-collection-pass.js.map +1 -1
- package/dist/ir/validation/attribute-collection-pass.test.js +43 -36
- package/dist/ir/validation/attribute-collection-pass.test.js.map +1 -1
- package/dist/ir/validation/index.d.ts +3 -0
- package/dist/ir/validation/index.d.ts.map +1 -1
- package/dist/ir/validation/index.js +3 -0
- package/dist/ir/validation/index.js.map +1 -1
- package/dist/ir/validation/numeric-coercion-pass.d.ts +22 -16
- package/dist/ir/validation/numeric-coercion-pass.d.ts.map +1 -1
- package/dist/ir/validation/numeric-coercion-pass.js +159 -51
- package/dist/ir/validation/numeric-coercion-pass.js.map +1 -1
- package/dist/ir/validation/numeric-invariants.test.js +72 -108
- package/dist/ir/validation/numeric-invariants.test.js.map +1 -1
- package/dist/ir/validation/numeric-proof-pass.d.ts.map +1 -1
- package/dist/ir/validation/numeric-proof-pass.js +71 -23
- package/dist/ir/validation/numeric-proof-pass.js.map +1 -1
- package/dist/ir/validation/rest-type-synthesis-pass.d.ts +24 -0
- package/dist/ir/validation/rest-type-synthesis-pass.d.ts.map +1 -0
- package/dist/ir/validation/rest-type-synthesis-pass.js +417 -0
- package/dist/ir/validation/rest-type-synthesis-pass.js.map +1 -0
- package/dist/ir/validation/soundness-gate.d.ts +11 -1
- package/dist/ir/validation/soundness-gate.d.ts.map +1 -1
- package/dist/ir/validation/soundness-gate.js +42 -10
- package/dist/ir/validation/soundness-gate.js.map +1 -1
- package/dist/ir/validation/soundness-gate.test.js +19 -2
- package/dist/ir/validation/soundness-gate.test.js.map +1 -1
- package/dist/ir/validation/virtual-marking-pass.d.ts +16 -0
- package/dist/ir/validation/virtual-marking-pass.d.ts.map +1 -0
- package/dist/ir/validation/virtual-marking-pass.js +77 -0
- package/dist/ir/validation/virtual-marking-pass.js.map +1 -0
- package/dist/ir/validation/yield-lowering-pass.test.js +2 -2
- package/dist/ir/validation/yield-lowering-pass.test.js.map +1 -1
- package/dist/program/bindings.d.ts +28 -0
- package/dist/program/bindings.d.ts.map +1 -1
- package/dist/program/bindings.js +204 -2
- package/dist/program/bindings.js.map +1 -1
- package/dist/program/bindings.test.js +30 -0
- package/dist/program/bindings.test.js.map +1 -1
- package/dist/program/creation.d.ts.map +1 -1
- package/dist/program/creation.js +251 -4
- package/dist/program/creation.js.map +1 -1
- package/dist/program/dependency-graph.d.ts.map +1 -1
- package/dist/program/dependency-graph.js +25 -25
- package/dist/program/dependency-graph.js.map +1 -1
- package/dist/program/diagnostics.d.ts.map +1 -1
- package/dist/program/diagnostics.js +6 -0
- package/dist/program/diagnostics.js.map +1 -1
- package/dist/program/index.d.ts +1 -1
- package/dist/program/index.d.ts.map +1 -1
- package/dist/program/types.d.ts +8 -8
- package/dist/program/types.d.ts.map +1 -1
- package/dist/resolver/clr-bindings-resolver.d.ts +1 -0
- package/dist/resolver/clr-bindings-resolver.d.ts.map +1 -1
- package/dist/resolver/clr-bindings-resolver.js +90 -34
- package/dist/resolver/clr-bindings-resolver.js.map +1 -1
- package/dist/resolver/import-resolution.d.ts +16 -1
- package/dist/resolver/import-resolution.d.ts.map +1 -1
- package/dist/resolver/import-resolution.js +29 -12
- package/dist/resolver/import-resolution.js.map +1 -1
- package/dist/resolver/naming.d.ts +1 -1
- package/dist/resolver/naming.d.ts.map +1 -1
- package/dist/resolver/naming.js +13 -2
- package/dist/resolver/naming.js.map +1 -1
- package/dist/resolver.test.js +4 -0
- package/dist/resolver.test.js.map +1 -1
- package/dist/symbol-table/builder.d.ts +3 -1
- package/dist/symbol-table/builder.d.ts.map +1 -1
- package/dist/symbol-table/builder.js +9 -8
- package/dist/symbol-table/builder.js.map +1 -1
- package/dist/symbol-table/types.d.ts +2 -2
- package/dist/symbol-table/types.d.ts.map +1 -1
- package/dist/types/diagnostic.d.ts +12 -2
- package/dist/types/diagnostic.d.ts.map +1 -1
- package/dist/types/diagnostic.js +5 -1
- package/dist/types/diagnostic.js.map +1 -1
- package/dist/validation/extension-methods.d.ts +17 -0
- package/dist/validation/extension-methods.d.ts.map +1 -0
- package/dist/validation/extension-methods.js +133 -0
- package/dist/validation/extension-methods.js.map +1 -0
- package/dist/validation/generics.d.ts.map +1 -1
- package/dist/validation/generics.js +1 -129
- package/dist/validation/generics.js.map +1 -1
- package/dist/validation/imports.js +1 -1
- package/dist/validation/imports.js.map +1 -1
- package/dist/validation/index.d.ts +1 -0
- package/dist/validation/index.d.ts.map +1 -1
- package/dist/validation/index.js +1 -0
- package/dist/validation/index.js.map +1 -1
- package/dist/validation/orchestrator.d.ts.map +1 -1
- package/dist/validation/orchestrator.js +2 -0
- package/dist/validation/orchestrator.js.map +1 -1
- package/dist/validation/static-safety.d.ts +1 -0
- package/dist/validation/static-safety.d.ts.map +1 -1
- package/dist/validation/static-safety.js +366 -96
- package/dist/validation/static-safety.js.map +1 -1
- package/dist/validator.test.js +77 -1
- package/dist/validator.test.js.map +1 -1
- package/package.json +2 -2
- package/dist/ir/type-converter/arrays.d.ts +0 -10
- package/dist/ir/type-converter/arrays.d.ts.map +0 -1
- package/dist/ir/type-converter/arrays.js.map +0 -1
- package/dist/ir/type-converter/converter.d.ts +0 -6
- package/dist/ir/type-converter/converter.d.ts.map +0 -1
- package/dist/ir/type-converter/converter.js +0 -6
- package/dist/ir/type-converter/converter.js.map +0 -1
- package/dist/ir/type-converter/functions.d.ts +0 -10
- package/dist/ir/type-converter/functions.d.ts.map +0 -1
- package/dist/ir/type-converter/functions.js +0 -15
- package/dist/ir/type-converter/functions.js.map +0 -1
- package/dist/ir/type-converter/index.d.ts +0 -7
- package/dist/ir/type-converter/index.d.ts.map +0 -1
- package/dist/ir/type-converter/index.js +0 -7
- package/dist/ir/type-converter/index.js.map +0 -1
- package/dist/ir/type-converter/inference.d.ts +0 -32
- package/dist/ir/type-converter/inference.d.ts.map +0 -1
- package/dist/ir/type-converter/inference.js +0 -297
- package/dist/ir/type-converter/inference.js.map +0 -1
- package/dist/ir/type-converter/literals.d.ts.map +0 -1
- package/dist/ir/type-converter/literals.js.map +0 -1
- package/dist/ir/type-converter/objects.d.ts +0 -16
- package/dist/ir/type-converter/objects.d.ts.map +0 -1
- package/dist/ir/type-converter/objects.js.map +0 -1
- package/dist/ir/type-converter/orchestrator.d.ts.map +0 -1
- package/dist/ir/type-converter/orchestrator.js.map +0 -1
- package/dist/ir/type-converter/patterns.d.ts +0 -10
- package/dist/ir/type-converter/patterns.d.ts.map +0 -1
- package/dist/ir/type-converter/patterns.js.map +0 -1
- package/dist/ir/type-converter/primitives.d.ts.map +0 -1
- package/dist/ir/type-converter/primitives.js.map +0 -1
- package/dist/ir/type-converter/references.d.ts.map +0 -1
- package/dist/ir/type-converter/references.js +0 -371
- package/dist/ir/type-converter/references.js.map +0 -1
- package/dist/ir/type-converter/unions-intersections.d.ts +0 -14
- package/dist/ir/type-converter/unions-intersections.d.ts.map +0 -1
- package/dist/ir/type-converter/unions-intersections.js +0 -22
- package/dist/ir/type-converter/unions-intersections.js.map +0 -1
- package/dist/ir/type-converter/utility-types.d.ts.map +0 -1
- package/dist/ir/type-converter/utility-types.js +0 -528
- package/dist/ir/type-converter/utility-types.js.map +0 -1
- package/dist/ir/type-converter/utility-types.test.d.ts.map +0 -1
- package/dist/ir/type-converter/utility-types.test.js.map +0 -1
- /package/dist/ir/{type-converter → type-system/internal/type-converter}/literals.js +0 -0
- /package/dist/ir/{type-converter → type-system/internal/type-converter}/primitives.js +0 -0
- /package/dist/ir/{type-converter → type-system/internal/type-converter}/utility-types.test.d.ts +0 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Internal Handle Types — NOT FOR PUBLIC EXPORT
|
|
3
|
+
*
|
|
4
|
+
* ALICE'S SPEC: These types are INTERNAL ONLY.
|
|
5
|
+
* They may contain raw TypeNodes (as unknown) for internal use.
|
|
6
|
+
* They must NOT be exported from type-system/index.ts.
|
|
7
|
+
*
|
|
8
|
+
* Allowed importers:
|
|
9
|
+
* - ir/type-system/**
|
|
10
|
+
* - ir/binding/**
|
|
11
|
+
*/
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=handle-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handle-types.js","sourceRoot":"","sources":["../../../../src/ir/type-system/internal/handle-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NominalEnv - Inheritance instantiation environment
|
|
3
|
+
*
|
|
4
|
+
* Phase 6 (Alice's spec): TypeId-based, Universe-driven.
|
|
5
|
+
*
|
|
6
|
+
* Computes type parameter substitution through inheritance chains
|
|
7
|
+
* deterministically, using only the UnifiedTypeCatalog (no TypeNodes).
|
|
8
|
+
*/
|
|
9
|
+
import type { IrType } from "../../types/index.js";
|
|
10
|
+
import type { UnifiedTypeCatalog, TypeId } from "./universe/types.js";
|
|
11
|
+
/**
|
|
12
|
+
* Map from type parameter name to concrete IR type
|
|
13
|
+
*/
|
|
14
|
+
export type InstantiationEnv = ReadonlyMap<string, IrType>;
|
|
15
|
+
/**
|
|
16
|
+
* Substitution result for a specific type in the inheritance chain
|
|
17
|
+
*/
|
|
18
|
+
export type SubstitutionResult = {
|
|
19
|
+
readonly declaringTypeId: TypeId;
|
|
20
|
+
readonly substitution: InstantiationEnv;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* NominalEnv API - Phase 6: TypeId-based
|
|
24
|
+
*/
|
|
25
|
+
export type NominalEnv = {
|
|
26
|
+
/**
|
|
27
|
+
* Find which nominal type in the inheritance chain declares a given member.
|
|
28
|
+
* Returns the TypeId and the substitution needed to access that member.
|
|
29
|
+
*/
|
|
30
|
+
readonly findMemberDeclaringType: (receiverTypeId: TypeId, receiverTypeArgs: readonly IrType[], memberName: string) => SubstitutionResult | undefined;
|
|
31
|
+
/**
|
|
32
|
+
* Get type parameter substitution for accessing a member from a target type
|
|
33
|
+
* when the receiver has the given TypeId and type arguments.
|
|
34
|
+
*
|
|
35
|
+
* Example:
|
|
36
|
+
* ```typescript
|
|
37
|
+
* class SomeBase<T> { value: List<T>; }
|
|
38
|
+
* class SomeClass extends SomeBase<int> {}
|
|
39
|
+
*
|
|
40
|
+
* // getInstantiation(SomeClassId, [], SomeBaseId)
|
|
41
|
+
* // → { "T" → int }
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
readonly getInstantiation: (receiverTypeId: TypeId, receiverTypeArgs: readonly IrType[], targetTypeId: TypeId) => InstantiationEnv | undefined;
|
|
45
|
+
/**
|
|
46
|
+
* Get the complete inheritance chain for a nominal type.
|
|
47
|
+
* Returns TypeIds in order from child to parent.
|
|
48
|
+
*
|
|
49
|
+
* Only follows "extends" edges (matches legacy behavior).
|
|
50
|
+
*/
|
|
51
|
+
readonly getInheritanceChain: (typeId: TypeId) => readonly TypeId[];
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Apply a substitution map to an IrType.
|
|
55
|
+
* Replaces typeParameterType nodes with their concrete values.
|
|
56
|
+
*/
|
|
57
|
+
export declare const substituteIrType: (type: IrType, subst: InstantiationEnv) => IrType;
|
|
58
|
+
/**
|
|
59
|
+
* Build a NominalEnv from a UnifiedTypeCatalog.
|
|
60
|
+
*
|
|
61
|
+
* Phase 6: Uses ONLY the catalog for all lookups. No TypeRegistry, no TypeNodes.
|
|
62
|
+
*
|
|
63
|
+
* @param catalog The UnifiedTypeCatalog to use for lookups
|
|
64
|
+
*/
|
|
65
|
+
export declare const buildNominalEnv: (catalog: UnifiedTypeCatalog) => NominalEnv;
|
|
66
|
+
//# sourceMappingURL=nominal-env.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nominal-env.d.ts","sourceRoot":"","sources":["../../../../src/ir/type-system/internal/nominal-env.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EACV,kBAAkB,EAClB,MAAM,EAEP,MAAM,qBAAqB,CAAC;AAE7B;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE3D;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,YAAY,EAAE,gBAAgB,CAAC;CACzC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB;;;OAGG;IACH,QAAQ,CAAC,uBAAuB,EAAE,CAChC,cAAc,EAAE,MAAM,EACtB,gBAAgB,EAAE,SAAS,MAAM,EAAE,EACnC,UAAU,EAAE,MAAM,KACf,kBAAkB,GAAG,SAAS,CAAC;IAEpC;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,gBAAgB,EAAE,CACzB,cAAc,EAAE,MAAM,EACtB,gBAAgB,EAAE,SAAS,MAAM,EAAE,EACnC,YAAY,EAAE,MAAM,KACjB,gBAAgB,GAAG,SAAS,CAAC;IAElC;;;;;OAKG;IACH,QAAQ,CAAC,mBAAmB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,SAAS,MAAM,EAAE,CAAC;CACrE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,GAC3B,MAAM,MAAM,EACZ,OAAO,gBAAgB,KACtB,MA8HF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GAAI,SAAS,kBAAkB,KAAG,UAqM7D,CAAC"}
|
|
@@ -0,0 +1,301 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NominalEnv - Inheritance instantiation environment
|
|
3
|
+
*
|
|
4
|
+
* Phase 6 (Alice's spec): TypeId-based, Universe-driven.
|
|
5
|
+
*
|
|
6
|
+
* Computes type parameter substitution through inheritance chains
|
|
7
|
+
* deterministically, using only the UnifiedTypeCatalog (no TypeNodes).
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Apply a substitution map to an IrType.
|
|
11
|
+
* Replaces typeParameterType nodes with their concrete values.
|
|
12
|
+
*/
|
|
13
|
+
export const substituteIrType = (type, subst) => {
|
|
14
|
+
switch (type.kind) {
|
|
15
|
+
case "typeParameterType": {
|
|
16
|
+
const replacement = subst.get(type.name);
|
|
17
|
+
return replacement ?? type;
|
|
18
|
+
}
|
|
19
|
+
case "referenceType": {
|
|
20
|
+
// Check if the type itself is a type parameter (legacy format)
|
|
21
|
+
const replacement = subst.get(type.name);
|
|
22
|
+
if (replacement)
|
|
23
|
+
return replacement;
|
|
24
|
+
// Substitute in type arguments and structural members
|
|
25
|
+
const hasTypeArgs = type.typeArguments && type.typeArguments.length > 0;
|
|
26
|
+
const hasStructural = type.structuralMembers && type.structuralMembers.length > 0;
|
|
27
|
+
if (hasTypeArgs || hasStructural) {
|
|
28
|
+
return {
|
|
29
|
+
...type,
|
|
30
|
+
typeArguments: hasTypeArgs
|
|
31
|
+
? type.typeArguments.map((arg) => substituteIrType(arg, subst))
|
|
32
|
+
: type.typeArguments,
|
|
33
|
+
structuralMembers: hasStructural
|
|
34
|
+
? type.structuralMembers.map((m) => {
|
|
35
|
+
if (m.kind === "propertySignature") {
|
|
36
|
+
return {
|
|
37
|
+
...m,
|
|
38
|
+
type: substituteIrType(m.type, subst),
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
// methodSignature
|
|
42
|
+
return {
|
|
43
|
+
...m,
|
|
44
|
+
returnType: m.returnType
|
|
45
|
+
? substituteIrType(m.returnType, subst)
|
|
46
|
+
: m.returnType,
|
|
47
|
+
parameters: m.parameters.map((p) => ({
|
|
48
|
+
...p,
|
|
49
|
+
type: p.type ? substituteIrType(p.type, subst) : p.type,
|
|
50
|
+
})),
|
|
51
|
+
};
|
|
52
|
+
})
|
|
53
|
+
: type.structuralMembers,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
return type;
|
|
57
|
+
}
|
|
58
|
+
case "arrayType": {
|
|
59
|
+
return {
|
|
60
|
+
...type,
|
|
61
|
+
elementType: substituteIrType(type.elementType, subst),
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
case "functionType": {
|
|
65
|
+
return {
|
|
66
|
+
...type,
|
|
67
|
+
parameters: type.parameters.map((p) => ({
|
|
68
|
+
...p,
|
|
69
|
+
type: p.type ? substituteIrType(p.type, subst) : p.type,
|
|
70
|
+
})),
|
|
71
|
+
returnType: type.returnType
|
|
72
|
+
? substituteIrType(type.returnType, subst)
|
|
73
|
+
: type.returnType,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
case "unionType": {
|
|
77
|
+
return {
|
|
78
|
+
...type,
|
|
79
|
+
types: type.types.map((t) => substituteIrType(t, subst)),
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
case "tupleType": {
|
|
83
|
+
return {
|
|
84
|
+
...type,
|
|
85
|
+
elementTypes: type.elementTypes.map((t) => substituteIrType(t, subst)),
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
case "dictionaryType": {
|
|
89
|
+
return {
|
|
90
|
+
...type,
|
|
91
|
+
keyType: substituteIrType(type.keyType, subst),
|
|
92
|
+
valueType: substituteIrType(type.valueType, subst),
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
case "intersectionType": {
|
|
96
|
+
return {
|
|
97
|
+
...type,
|
|
98
|
+
types: type.types.map((t) => substituteIrType(t, subst)),
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
case "objectType": {
|
|
102
|
+
return {
|
|
103
|
+
...type,
|
|
104
|
+
members: type.members.map((m) => {
|
|
105
|
+
if (m.kind === "propertySignature") {
|
|
106
|
+
return {
|
|
107
|
+
...m,
|
|
108
|
+
type: substituteIrType(m.type, subst),
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
// methodSignature
|
|
112
|
+
return {
|
|
113
|
+
...m,
|
|
114
|
+
returnType: m.returnType
|
|
115
|
+
? substituteIrType(m.returnType, subst)
|
|
116
|
+
: m.returnType,
|
|
117
|
+
parameters: m.parameters.map((p) => ({
|
|
118
|
+
...p,
|
|
119
|
+
type: p.type ? substituteIrType(p.type, subst) : p.type,
|
|
120
|
+
})),
|
|
121
|
+
};
|
|
122
|
+
}),
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
default:
|
|
126
|
+
return type;
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
/**
|
|
130
|
+
* Build a NominalEnv from a UnifiedTypeCatalog.
|
|
131
|
+
*
|
|
132
|
+
* Phase 6: Uses ONLY the catalog for all lookups. No TypeRegistry, no TypeNodes.
|
|
133
|
+
*
|
|
134
|
+
* @param catalog The UnifiedTypeCatalog to use for lookups
|
|
135
|
+
*/
|
|
136
|
+
export const buildNominalEnv = (catalog) => {
|
|
137
|
+
// Cache for computed inheritance chains
|
|
138
|
+
// Key: stableId
|
|
139
|
+
const inheritanceChainCache = new Map();
|
|
140
|
+
// Cache for computed instantiations
|
|
141
|
+
// Key: "receiverStableId|serialized args|targetStableId"
|
|
142
|
+
const instantiationCache = new Map();
|
|
143
|
+
/**
|
|
144
|
+
* Serialize type args for cache key.
|
|
145
|
+
*/
|
|
146
|
+
const serializeTypeArgs = (typeArgs) => {
|
|
147
|
+
if (typeArgs.length === 0)
|
|
148
|
+
return "";
|
|
149
|
+
return typeArgs.map((a) => JSON.stringify(a)).join(",");
|
|
150
|
+
};
|
|
151
|
+
/**
|
|
152
|
+
* Get the inheritance chain for a nominal type.
|
|
153
|
+
* Returns TypeIds in order from child to parent.
|
|
154
|
+
*
|
|
155
|
+
* Phase 6 (Alice's spec): This must be sufficient for nominal assignability and
|
|
156
|
+
* member lookup across both class inheritance and implemented interfaces.
|
|
157
|
+
*/
|
|
158
|
+
const getInheritanceChain = (typeId) => {
|
|
159
|
+
const cached = inheritanceChainCache.get(typeId.stableId);
|
|
160
|
+
if (cached)
|
|
161
|
+
return cached;
|
|
162
|
+
const chain = [typeId];
|
|
163
|
+
const visited = new Set([typeId.stableId]);
|
|
164
|
+
const queue = [typeId];
|
|
165
|
+
while (queue.length > 0) {
|
|
166
|
+
const currentTypeId = queue.shift();
|
|
167
|
+
if (!currentTypeId)
|
|
168
|
+
continue;
|
|
169
|
+
const heritage = [...catalog.getHeritage(currentTypeId)].sort((a, b) => {
|
|
170
|
+
const rank = (k) => (k === "extends" ? 0 : 1);
|
|
171
|
+
const ra = rank(a.kind);
|
|
172
|
+
const rb = rank(b.kind);
|
|
173
|
+
if (ra !== rb)
|
|
174
|
+
return ra - rb;
|
|
175
|
+
return a.targetStableId.localeCompare(b.targetStableId);
|
|
176
|
+
});
|
|
177
|
+
for (const edge of heritage) {
|
|
178
|
+
if (visited.has(edge.targetStableId))
|
|
179
|
+
continue;
|
|
180
|
+
const parentEntry = catalog.getByStableId(edge.targetStableId);
|
|
181
|
+
if (!parentEntry)
|
|
182
|
+
continue;
|
|
183
|
+
visited.add(edge.targetStableId);
|
|
184
|
+
chain.push(parentEntry.typeId);
|
|
185
|
+
queue.push(parentEntry.typeId);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
inheritanceChainCache.set(typeId.stableId, chain);
|
|
189
|
+
return chain;
|
|
190
|
+
};
|
|
191
|
+
/**
|
|
192
|
+
* Get instantiation for a specific target in the inheritance chain.
|
|
193
|
+
*/
|
|
194
|
+
const getInstantiation = (receiverTypeId, receiverTypeArgs, targetTypeId) => {
|
|
195
|
+
// Check cache
|
|
196
|
+
const cacheKey = `${receiverTypeId.stableId}|${serializeTypeArgs(receiverTypeArgs)}|${targetTypeId.stableId}`;
|
|
197
|
+
const cached = instantiationCache.get(cacheKey);
|
|
198
|
+
if (cached)
|
|
199
|
+
return cached;
|
|
200
|
+
// If receiver is the target, build initial substitution from receiver's type args
|
|
201
|
+
if (receiverTypeId.stableId === targetTypeId.stableId) {
|
|
202
|
+
const receiverTypeParams = catalog.getTypeParameters(receiverTypeId);
|
|
203
|
+
const subst = new Map();
|
|
204
|
+
for (let i = 0; i < receiverTypeParams.length; i++) {
|
|
205
|
+
const paramName = receiverTypeParams[i]?.name;
|
|
206
|
+
const arg = receiverTypeArgs[i];
|
|
207
|
+
if (paramName && arg) {
|
|
208
|
+
subst.set(paramName, arg);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
instantiationCache.set(cacheKey, subst);
|
|
212
|
+
return subst;
|
|
213
|
+
}
|
|
214
|
+
// Start with receiver's type args (receiver param → concrete type)
|
|
215
|
+
const receiverTypeParams = catalog.getTypeParameters(receiverTypeId);
|
|
216
|
+
let currentSubst = new Map();
|
|
217
|
+
for (let i = 0; i < receiverTypeParams.length; i++) {
|
|
218
|
+
const paramName = receiverTypeParams[i]?.name;
|
|
219
|
+
const arg = receiverTypeArgs[i];
|
|
220
|
+
if (paramName && arg) {
|
|
221
|
+
currentSubst.set(paramName, arg);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
const serializeSubst = (typeId, subst) => {
|
|
225
|
+
const typeParams = catalog.getTypeParameters(typeId);
|
|
226
|
+
return typeParams
|
|
227
|
+
.map((tp) => JSON.stringify(subst.get(tp.name) ?? null))
|
|
228
|
+
.join(",");
|
|
229
|
+
};
|
|
230
|
+
const visited = new Set();
|
|
231
|
+
const queue = [
|
|
232
|
+
{
|
|
233
|
+
typeId: receiverTypeId,
|
|
234
|
+
subst: currentSubst,
|
|
235
|
+
},
|
|
236
|
+
];
|
|
237
|
+
while (queue.length > 0) {
|
|
238
|
+
const state = queue.shift();
|
|
239
|
+
if (!state)
|
|
240
|
+
continue;
|
|
241
|
+
if (state.typeId.stableId === targetTypeId.stableId) {
|
|
242
|
+
instantiationCache.set(cacheKey, state.subst);
|
|
243
|
+
return state.subst;
|
|
244
|
+
}
|
|
245
|
+
const heritage = [...catalog.getHeritage(state.typeId)].sort((a, b) => {
|
|
246
|
+
const rank = (k) => (k === "extends" ? 0 : 1);
|
|
247
|
+
const ra = rank(a.kind);
|
|
248
|
+
const rb = rank(b.kind);
|
|
249
|
+
if (ra !== rb)
|
|
250
|
+
return ra - rb;
|
|
251
|
+
return a.targetStableId.localeCompare(b.targetStableId);
|
|
252
|
+
});
|
|
253
|
+
for (const edge of heritage) {
|
|
254
|
+
const parentEntry = catalog.getByStableId(edge.targetStableId);
|
|
255
|
+
if (!parentEntry)
|
|
256
|
+
continue;
|
|
257
|
+
const parentTypeId = parentEntry.typeId;
|
|
258
|
+
const parentTypeParams = catalog.getTypeParameters(parentTypeId);
|
|
259
|
+
const nextSubst = new Map();
|
|
260
|
+
for (let i = 0; i < parentTypeParams.length; i++) {
|
|
261
|
+
const paramName = parentTypeParams[i]?.name;
|
|
262
|
+
const argType = edge.typeArguments[i];
|
|
263
|
+
if (paramName && argType) {
|
|
264
|
+
nextSubst.set(paramName, substituteIrType(argType, state.subst));
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
const visitKey = `${parentTypeId.stableId}|${serializeSubst(parentTypeId, nextSubst)}`;
|
|
268
|
+
if (visited.has(visitKey))
|
|
269
|
+
continue;
|
|
270
|
+
visited.add(visitKey);
|
|
271
|
+
queue.push({ typeId: parentTypeId, subst: nextSubst });
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
return undefined;
|
|
275
|
+
};
|
|
276
|
+
/**
|
|
277
|
+
* Find which type in the inheritance chain declares a given member.
|
|
278
|
+
*/
|
|
279
|
+
const findMemberDeclaringType = (receiverTypeId, receiverTypeArgs, memberName) => {
|
|
280
|
+
const chain = getInheritanceChain(receiverTypeId);
|
|
281
|
+
for (const typeId of chain) {
|
|
282
|
+
const member = catalog.getMember(typeId, memberName);
|
|
283
|
+
if (member) {
|
|
284
|
+
const subst = getInstantiation(receiverTypeId, receiverTypeArgs, typeId);
|
|
285
|
+
if (subst) {
|
|
286
|
+
return {
|
|
287
|
+
declaringTypeId: typeId,
|
|
288
|
+
substitution: subst,
|
|
289
|
+
};
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
return undefined;
|
|
294
|
+
};
|
|
295
|
+
return {
|
|
296
|
+
getInstantiation,
|
|
297
|
+
findMemberDeclaringType,
|
|
298
|
+
getInheritanceChain,
|
|
299
|
+
};
|
|
300
|
+
};
|
|
301
|
+
//# sourceMappingURL=nominal-env.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nominal-env.js","sourceRoot":"","sources":["../../../../src/ir/type-system/internal/nominal-env.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Array type conversion
|
|
3
|
+
*/
|
|
4
|
+
import * as ts from "typescript";
|
|
5
|
+
import { IrType } from "../../../types.js";
|
|
6
|
+
import type { Binding } from "../../../binding/index.js";
|
|
7
|
+
/**
|
|
8
|
+
* Convert TypeScript array type to IR array type
|
|
9
|
+
*/
|
|
10
|
+
export declare const convertArrayType: (node: ts.ArrayTypeNode, binding: Binding, convertType: (node: ts.TypeNode, binding: Binding) => IrType) => IrType;
|
|
11
|
+
//# sourceMappingURL=arrays.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arrays.d.ts","sourceRoot":"","sources":["../../../../../src/ir/type-system/internal/type-converter/arrays.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAEzD;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAC3B,MAAM,EAAE,CAAC,aAAa,EACtB,SAAS,OAAO,EAChB,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,KAAK,MAAM,KAC3D,MAMF,CAAC"}
|
|
@@ -4,10 +4,10 @@
|
|
|
4
4
|
/**
|
|
5
5
|
* Convert TypeScript array type to IR array type
|
|
6
6
|
*/
|
|
7
|
-
export const convertArrayType = (node,
|
|
7
|
+
export const convertArrayType = (node, binding, convertType) => {
|
|
8
8
|
return {
|
|
9
9
|
kind: "arrayType",
|
|
10
|
-
elementType: convertType(node.elementType,
|
|
10
|
+
elementType: convertType(node.elementType, binding),
|
|
11
11
|
origin: "explicit",
|
|
12
12
|
};
|
|
13
13
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arrays.js","sourceRoot":"","sources":["../../../../../src/ir/type-system/internal/type-converter/arrays.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,IAAsB,EACtB,OAAgB,EAChB,WAA4D,EACpD,EAAE;IACV,OAAO;QACL,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC;QACnD,MAAM,EAAE,UAAU;KACnB,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type converter - TypeScript types to IR types
|
|
3
|
+
* Main dispatcher - re-exports from orchestrator
|
|
4
|
+
*
|
|
5
|
+
* Phase 5 Step 4: Added convertCapturedTypeNode for cast encapsulation.
|
|
6
|
+
*/
|
|
7
|
+
import { IrType } from "../../../types.js";
|
|
8
|
+
import type { Binding } from "../../../binding/index.js";
|
|
9
|
+
export { convertType, convertFunctionType, convertObjectType, } from "./orchestrator.js";
|
|
10
|
+
/**
|
|
11
|
+
* Convert a captured type node (unknown) to IrType.
|
|
12
|
+
*
|
|
13
|
+
* This function encapsulates the ts.TypeNode cast in one place.
|
|
14
|
+
* Per Alice's spec: all TypeNode casts should be inside type-system/internal.
|
|
15
|
+
*/
|
|
16
|
+
export declare const convertCapturedTypeNode: (node: unknown, binding: Binding) => IrType;
|
|
17
|
+
//# sourceMappingURL=converter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"converter.d.ts","sourceRoot":"","sources":["../../../../../src/ir/type-system/internal/type-converter/converter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAGzD,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAE3B;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,GAClC,MAAM,OAAO,EACb,SAAS,OAAO,KACf,MAA2D,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type converter - TypeScript types to IR types
|
|
3
|
+
* Main dispatcher - re-exports from orchestrator
|
|
4
|
+
*
|
|
5
|
+
* Phase 5 Step 4: Added convertCapturedTypeNode for cast encapsulation.
|
|
6
|
+
*/
|
|
7
|
+
import { convertType as convertTypeInternal } from "./orchestrator.js";
|
|
8
|
+
export { convertType, convertFunctionType, convertObjectType, } from "./orchestrator.js";
|
|
9
|
+
/**
|
|
10
|
+
* Convert a captured type node (unknown) to IrType.
|
|
11
|
+
*
|
|
12
|
+
* This function encapsulates the ts.TypeNode cast in one place.
|
|
13
|
+
* Per Alice's spec: all TypeNode casts should be inside type-system/internal.
|
|
14
|
+
*/
|
|
15
|
+
export const convertCapturedTypeNode = (node, binding) => convertTypeInternal(node, binding);
|
|
16
|
+
//# sourceMappingURL=converter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"converter.js","sourceRoot":"","sources":["../../../../../src/ir/type-system/internal/type-converter/converter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,WAAW,IAAI,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAEvE,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAE3B;;;;;GAKG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,IAAa,EACb,OAAgB,EACR,EAAE,CAAC,mBAAmB,CAAC,IAAmB,EAAE,OAAO,CAAC,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Function type conversion
|
|
3
|
+
*
|
|
4
|
+
* Phase 5 Step 4: Uses local parameter helper (no ProgramContext dependency).
|
|
5
|
+
* Type conversion should NOT depend on statement conversion.
|
|
6
|
+
*/
|
|
7
|
+
import * as ts from "typescript";
|
|
8
|
+
import { IrType, IrFunctionType } from "../../../types.js";
|
|
9
|
+
import type { Binding } from "../../../binding/index.js";
|
|
10
|
+
/**
|
|
11
|
+
* Convert TypeScript function type to IR function type
|
|
12
|
+
*/
|
|
13
|
+
export declare const convertFunctionType: (node: ts.FunctionTypeNode, binding: Binding, convertType: (node: ts.TypeNode, binding: Binding) => IrType) => IrFunctionType;
|
|
14
|
+
//# sourceMappingURL=functions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"functions.d.ts","sourceRoot":"","sources":["../../../../../src/ir/type-system/internal/type-converter/functions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAe,MAAM,mBAAmB,CAAC;AAExE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAEzD;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAC9B,MAAM,EAAE,CAAC,gBAAgB,EACzB,SAAS,OAAO,EAChB,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,KAAK,MAAM,KAC3D,cAMF,CAAC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Function type conversion
|
|
3
|
+
*
|
|
4
|
+
* Phase 5 Step 4: Uses local parameter helper (no ProgramContext dependency).
|
|
5
|
+
* Type conversion should NOT depend on statement conversion.
|
|
6
|
+
*/
|
|
7
|
+
import * as ts from "typescript";
|
|
8
|
+
import { convertBindingName } from "../../../syntax/binding-patterns.js";
|
|
9
|
+
/**
|
|
10
|
+
* Convert TypeScript function type to IR function type
|
|
11
|
+
*/
|
|
12
|
+
export const convertFunctionType = (node, binding, convertType) => {
|
|
13
|
+
return {
|
|
14
|
+
kind: "functionType",
|
|
15
|
+
parameters: convertTypeParameters(node.parameters, binding, convertType),
|
|
16
|
+
returnType: convertType(node.type, binding),
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Convert parameters for type signatures (no initializers, no ProgramContext).
|
|
21
|
+
*
|
|
22
|
+
* This is used for FunctionTypeNode and MethodSignature in type contexts.
|
|
23
|
+
* Unlike statement-converter's convertParameters, this:
|
|
24
|
+
* - Does NOT convert initializers (type signatures don't have them)
|
|
25
|
+
* - Does NOT require ProgramContext
|
|
26
|
+
* - Takes a convertType function for type node conversion
|
|
27
|
+
*/
|
|
28
|
+
const convertTypeParameters = (parameters, binding, convertType) => {
|
|
29
|
+
return parameters.map((param) => {
|
|
30
|
+
let passing = "value";
|
|
31
|
+
let actualType = param.type;
|
|
32
|
+
// Detect ref<T>, out<T>, in<T>, inref<T> wrapper types
|
|
33
|
+
if (param.type &&
|
|
34
|
+
ts.isTypeReferenceNode(param.type) &&
|
|
35
|
+
ts.isIdentifier(param.type.typeName)) {
|
|
36
|
+
const typeName = param.type.typeName.text;
|
|
37
|
+
if ((typeName === "ref" ||
|
|
38
|
+
typeName === "out" ||
|
|
39
|
+
typeName === "in" ||
|
|
40
|
+
typeName === "inref") &&
|
|
41
|
+
param.type.typeArguments &&
|
|
42
|
+
param.type.typeArguments.length > 0) {
|
|
43
|
+
// Set passing mode (both "in" and "inref" map to C# "in")
|
|
44
|
+
passing =
|
|
45
|
+
typeName === "in" || typeName === "inref"
|
|
46
|
+
? "in"
|
|
47
|
+
: typeName;
|
|
48
|
+
// Extract wrapped type
|
|
49
|
+
actualType = param.type.typeArguments[0];
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
// Convert type if present
|
|
53
|
+
const paramType = actualType ? convertType(actualType, binding) : undefined;
|
|
54
|
+
return {
|
|
55
|
+
kind: "parameter",
|
|
56
|
+
pattern: convertBindingName(param.name),
|
|
57
|
+
type: paramType,
|
|
58
|
+
// Type signatures don't have initializers
|
|
59
|
+
initializer: undefined,
|
|
60
|
+
isOptional: !!param.questionToken,
|
|
61
|
+
isRest: !!param.dotDotDotToken,
|
|
62
|
+
passing,
|
|
63
|
+
};
|
|
64
|
+
});
|
|
65
|
+
};
|
|
66
|
+
//# sourceMappingURL=functions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"functions.js","sourceRoot":"","sources":["../../../../../src/ir/type-system/internal/type-converter/functions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAGzE;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,IAAyB,EACzB,OAAgB,EAChB,WAA4D,EAC5C,EAAE;IAClB,OAAO;QACL,IAAI,EAAE,cAAc;QACpB,UAAU,EAAE,qBAAqB,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,WAAW,CAAC;QACxE,UAAU,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC;KAC5C,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,qBAAqB,GAAG,CAC5B,UAAiD,EACjD,OAAgB,EAChB,WAA4D,EACpC,EAAE;IAC1B,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC9B,IAAI,OAAO,GAAmC,OAAO,CAAC;QACtD,IAAI,UAAU,GAA4B,KAAK,CAAC,IAAI,CAAC;QAErD,uDAAuD;QACvD,IACE,KAAK,CAAC,IAAI;YACV,EAAE,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC;YAClC,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EACpC,CAAC;YACD,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YAC1C,IACE,CAAC,QAAQ,KAAK,KAAK;gBACjB,QAAQ,KAAK,KAAK;gBAClB,QAAQ,KAAK,IAAI;gBACjB,QAAQ,KAAK,OAAO,CAAC;gBACvB,KAAK,CAAC,IAAI,CAAC,aAAa;gBACxB,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EACnC,CAAC;gBACD,0DAA0D;gBAC1D,OAAO;oBACL,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,OAAO;wBACvC,CAAC,CAAC,IAAI;wBACN,CAAC,CAAE,QAA0B,CAAC;gBAClC,uBAAuB;gBACvB,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;QAED,0BAA0B;QAC1B,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAE5E,OAAO;YACL,IAAI,EAAE,WAAoB;YAC1B,OAAO,EAAE,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC;YACvC,IAAI,EAAE,SAAS;YACf,0CAA0C;YAC1C,WAAW,EAAE,SAAS;YACtB,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa;YACjC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc;YAC9B,OAAO;SACR,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type converter - Public API
|
|
3
|
+
*
|
|
4
|
+
* NOTE: convertBindingName was moved to ir/syntax/binding-patterns.ts
|
|
5
|
+
* per Alice's spec (it's syntax→IR conversion, not type logic).
|
|
6
|
+
*
|
|
7
|
+
* Phase 5 Step 4: Added convertCapturedTypeNode for cast encapsulation.
|
|
8
|
+
*/
|
|
9
|
+
export { convertType, convertFunctionType, convertObjectType, convertCapturedTypeNode, } from "./converter.js";
|
|
10
|
+
export { inferLambdaParamTypes, type LambdaParamInferenceResult, } from "./inference.js";
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/ir/type-system/internal/type-converter/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,qBAAqB,EACrB,KAAK,0BAA0B,GAChC,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type converter - Public API
|
|
3
|
+
*
|
|
4
|
+
* NOTE: convertBindingName was moved to ir/syntax/binding-patterns.ts
|
|
5
|
+
* per Alice's spec (it's syntax→IR conversion, not type logic).
|
|
6
|
+
*
|
|
7
|
+
* Phase 5 Step 4: Added convertCapturedTypeNode for cast encapsulation.
|
|
8
|
+
*/
|
|
9
|
+
export { convertType, convertFunctionType, convertObjectType, convertCapturedTypeNode, } from "./converter.js";
|
|
10
|
+
export { inferLambdaParamTypes, } from "./inference.js";
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/ir/type-system/internal/type-converter/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,qBAAqB,GAEtB,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type inference - Deterministic IR typing for lambda parameters
|
|
3
|
+
*
|
|
4
|
+
* IMPORTANT: Contextual type inference has been removed for INV-0 compliance.
|
|
5
|
+
* Lambda parameter types must now come from:
|
|
6
|
+
* 1. Explicit type annotations on parameters
|
|
7
|
+
* 2. ExpectedType threaded from call argument position
|
|
8
|
+
*
|
|
9
|
+
* The banned APIs (getContextualType, getTypeOfSymbolAtLocation, typeToTypeNode)
|
|
10
|
+
* are no longer used here. All typing is deterministic.
|
|
11
|
+
*/
|
|
12
|
+
import type * as ts from "typescript";
|
|
13
|
+
import type { IrType } from "../../../types.js";
|
|
14
|
+
import type { Binding } from "../../../binding/index.js";
|
|
15
|
+
/**
|
|
16
|
+
* Result of inferring lambda parameter types from contextual signature.
|
|
17
|
+
* Returns array of IrType (one per parameter) if all params can be inferred,
|
|
18
|
+
* or undefined if inference fails for any parameter.
|
|
19
|
+
*/
|
|
20
|
+
export type LambdaParamInferenceResult = {
|
|
21
|
+
readonly paramTypes: readonly (IrType | undefined)[];
|
|
22
|
+
readonly allInferred: boolean;
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Infer parameter types for a lambda (arrow function or function expression).
|
|
26
|
+
*
|
|
27
|
+
* DETERMINISTIC IR TYPING (INV-0 compliant):
|
|
28
|
+
* This function no longer uses contextual type inference from TypeScript.
|
|
29
|
+
* Lambda parameter types are determined by:
|
|
30
|
+
* 1. Explicit type annotations on parameters → handled by param.type
|
|
31
|
+
* 2. ExpectedType threaded from call argument position → handled by calls.ts
|
|
32
|
+
*
|
|
33
|
+
* Returns undefined to indicate that no contextual inference is performed.
|
|
34
|
+
* The caller (expression converter) will use expectedType from the call site.
|
|
35
|
+
*/
|
|
36
|
+
export declare const inferLambdaParamTypes: (_node: ts.ArrowFunction | ts.FunctionExpression, _binding: Binding) => LambdaParamInferenceResult | undefined;
|
|
37
|
+
//# sourceMappingURL=inference.d.ts.map
|