@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
|
@@ -2,87 +2,195 @@
|
|
|
2
2
|
* Function expression converters (function expressions and arrow functions)
|
|
3
3
|
*/
|
|
4
4
|
import * as ts from "typescript";
|
|
5
|
-
import {
|
|
5
|
+
import { getSourceSpan } from "./helpers.js";
|
|
6
6
|
import { convertExpression } from "../../expression-converter.js";
|
|
7
7
|
import { convertBlockStatement } from "../../statement-converter.js";
|
|
8
|
-
import {
|
|
8
|
+
import { convertBindingName } from "../../syntax/binding-patterns.js";
|
|
9
|
+
/**
|
|
10
|
+
* Extract parameter types from an expected function type.
|
|
11
|
+
* DETERMINISTIC: Uses only the IR type structure, not TS type inference.
|
|
12
|
+
*/
|
|
13
|
+
const extractParamTypesFromExpectedType = (expectedType) => {
|
|
14
|
+
if (!expectedType)
|
|
15
|
+
return undefined;
|
|
16
|
+
if (expectedType.kind !== "functionType")
|
|
17
|
+
return undefined;
|
|
18
|
+
return expectedType.parameters.map((p) => p.type);
|
|
19
|
+
};
|
|
9
20
|
/**
|
|
10
21
|
* Convert parameters for lambda expressions (arrow functions and function expressions).
|
|
11
|
-
*
|
|
22
|
+
*
|
|
23
|
+
* DETERMINISTIC TYPING: Parameter types come from:
|
|
24
|
+
* 1. Explicit type annotations on the parameter
|
|
25
|
+
* 2. expectedType (function type passed from call site via extractParameterTypes)
|
|
26
|
+
*
|
|
27
|
+
* If no type is available, parameter type is undefined (unknownType poison).
|
|
28
|
+
* Validation will emit TSN5202 for untyped lambda parameters.
|
|
12
29
|
*/
|
|
13
|
-
const convertLambdaParameters = (node,
|
|
14
|
-
//
|
|
15
|
-
const
|
|
30
|
+
const convertLambdaParameters = (node, ctx, expectedType) => {
|
|
31
|
+
// DETERMINISTIC: Extract parameter types from expectedType (the ONLY source for unannotated params)
|
|
32
|
+
const expectedParamTypes = extractParamTypesFromExpectedType(expectedType);
|
|
16
33
|
return node.parameters.map((param, index) => {
|
|
17
34
|
let passing = "value";
|
|
18
35
|
let actualType = param.type;
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
36
|
+
let isExtensionReceiver = false;
|
|
37
|
+
// Detect wrapper types (explicit annotation only):
|
|
38
|
+
// - thisarg<T> marks an extension-method receiver parameter (emits C# `this`)
|
|
39
|
+
// - ref<T>/out<T>/in<T> wrapper types mark passing mode (unwrap to T)
|
|
40
|
+
while (actualType &&
|
|
41
|
+
ts.isTypeReferenceNode(actualType) &&
|
|
42
|
+
ts.isIdentifier(actualType.typeName) &&
|
|
43
|
+
actualType.typeArguments &&
|
|
44
|
+
actualType.typeArguments.length > 0) {
|
|
45
|
+
const typeName = actualType.typeName.text;
|
|
46
|
+
if (typeName === "thisarg") {
|
|
47
|
+
isExtensionReceiver = true;
|
|
48
|
+
actualType = actualType.typeArguments[0];
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
if (typeName === "ref" || typeName === "out" || typeName === "in") {
|
|
27
52
|
passing = typeName === "in" ? "in" : typeName;
|
|
28
|
-
actualType =
|
|
53
|
+
actualType = actualType.typeArguments[0];
|
|
54
|
+
continue;
|
|
29
55
|
}
|
|
56
|
+
break;
|
|
30
57
|
}
|
|
31
58
|
// Determine the IrType for this parameter
|
|
59
|
+
// DETERMINISTIC Priority: 1. Explicit annotation, 2. expectedType from call site
|
|
32
60
|
let irType;
|
|
33
61
|
if (actualType) {
|
|
34
|
-
// Explicit type annotation
|
|
35
|
-
|
|
62
|
+
// Explicit type annotation
|
|
63
|
+
// PHASE 4 (Alice's spec): Use captureTypeSyntax + typeFromSyntax
|
|
64
|
+
const typeSystem = ctx.typeSystem;
|
|
65
|
+
irType = typeSystem.typeFromSyntax(ctx.binding.captureTypeSyntax(actualType));
|
|
36
66
|
}
|
|
37
|
-
else if (
|
|
38
|
-
//
|
|
39
|
-
irType =
|
|
67
|
+
else if (expectedParamTypes && expectedParamTypes[index]) {
|
|
68
|
+
// Use expectedType from call site (deterministic)
|
|
69
|
+
irType = expectedParamTypes[index];
|
|
40
70
|
}
|
|
71
|
+
// If no type available, irType stays undefined (unknownType poison)
|
|
72
|
+
// Validation will emit TSN5202 for untyped lambda parameters
|
|
41
73
|
return {
|
|
42
74
|
kind: "parameter",
|
|
43
75
|
pattern: convertBindingName(param.name),
|
|
44
76
|
type: irType,
|
|
77
|
+
// Pass parameter type for contextual typing of default value
|
|
45
78
|
initializer: param.initializer
|
|
46
|
-
? convertExpression(param.initializer,
|
|
79
|
+
? convertExpression(param.initializer, ctx, irType)
|
|
47
80
|
: undefined,
|
|
48
81
|
isOptional: !!param.questionToken,
|
|
49
82
|
isRest: !!param.dotDotDotToken,
|
|
50
83
|
passing,
|
|
84
|
+
isExtensionReceiver: isExtensionReceiver || undefined,
|
|
51
85
|
};
|
|
52
86
|
});
|
|
53
87
|
};
|
|
54
88
|
/**
|
|
55
89
|
* Convert function expression
|
|
90
|
+
*
|
|
91
|
+
* DETERMINISTIC TYPING: Build function type from declared parameters and return type.
|
|
92
|
+
* Parameter types come from explicit annotations or expectedType (no TS inference).
|
|
56
93
|
*/
|
|
57
|
-
export const convertFunctionExpression = (node,
|
|
94
|
+
export const convertFunctionExpression = (node, ctx, expectedType) => {
|
|
95
|
+
// PHASE 4 (Alice's spec): Use captureTypeSyntax + typeFromSyntax
|
|
96
|
+
const typeSystem = ctx.typeSystem;
|
|
97
|
+
// Get return type from declared annotation for contextual typing
|
|
98
|
+
const returnType = node.type
|
|
99
|
+
? typeSystem.typeFromSyntax(ctx.binding.captureTypeSyntax(node.type))
|
|
100
|
+
: undefined;
|
|
101
|
+
// DETERMINISTIC: Pass expectedType for parameter type inference
|
|
102
|
+
const parameters = convertLambdaParameters(node, ctx, expectedType);
|
|
103
|
+
const bodyCtx = (() => {
|
|
104
|
+
const env = new Map(ctx.lambdaTypeEnv ?? []);
|
|
105
|
+
for (const p of parameters) {
|
|
106
|
+
if (p.pattern.kind === "identifierPattern" && p.type) {
|
|
107
|
+
env.set(p.pattern.name, p.type);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return { ...ctx, lambdaTypeEnv: env };
|
|
111
|
+
})();
|
|
112
|
+
// DETERMINISTIC: Build function type from declared parameters and return type
|
|
113
|
+
const inferredType = {
|
|
114
|
+
kind: "functionType",
|
|
115
|
+
parameters,
|
|
116
|
+
returnType: returnType ?? { kind: "voidType" },
|
|
117
|
+
};
|
|
58
118
|
return {
|
|
59
119
|
kind: "functionExpression",
|
|
60
120
|
name: node.name?.text,
|
|
61
|
-
parameters
|
|
62
|
-
returnType
|
|
121
|
+
parameters,
|
|
122
|
+
returnType,
|
|
123
|
+
// Pass return type to body for contextual typing of return statements
|
|
63
124
|
body: node.body
|
|
64
|
-
? convertBlockStatement(node.body,
|
|
125
|
+
? convertBlockStatement(node.body, bodyCtx, returnType)
|
|
65
126
|
: { kind: "blockStatement", statements: [] },
|
|
66
127
|
isAsync: !!node.modifiers?.some((m) => m.kind === ts.SyntaxKind.AsyncKeyword),
|
|
67
128
|
isGenerator: !!node.asteriskToken,
|
|
68
|
-
inferredType
|
|
129
|
+
inferredType,
|
|
69
130
|
sourceSpan: getSourceSpan(node),
|
|
70
131
|
};
|
|
71
132
|
};
|
|
72
133
|
/**
|
|
73
134
|
* Convert arrow function expression
|
|
135
|
+
*
|
|
136
|
+
* DETERMINISTIC TYPING: Build function type from declared parameters and return type.
|
|
137
|
+
* Parameter types come from explicit annotations or expectedType (no TS inference).
|
|
74
138
|
*/
|
|
75
|
-
export const convertArrowFunction = (node,
|
|
139
|
+
export const convertArrowFunction = (node, ctx, expectedType) => {
|
|
140
|
+
// PHASE 4 (Alice's spec): Use captureTypeSyntax + typeFromSyntax
|
|
141
|
+
const typeSystem = ctx.typeSystem;
|
|
142
|
+
const expectedFnType = expectedType?.kind === "functionType" ? expectedType : undefined;
|
|
143
|
+
// Get return type from declared annotation, or from expectedType if available
|
|
144
|
+
const declaredReturnType = node.type
|
|
145
|
+
? typeSystem.typeFromSyntax(ctx.binding.captureTypeSyntax(node.type))
|
|
146
|
+
: undefined;
|
|
147
|
+
// DETERMINISTIC: Use expectedType's return type if no explicit annotation
|
|
148
|
+
const expectedReturnType = expectedFnType?.returnType;
|
|
149
|
+
const shouldUseExpectedReturnType = expectedReturnType !== undefined &&
|
|
150
|
+
expectedReturnType.kind !== "typeParameterType" &&
|
|
151
|
+
!typeSystem.containsTypeParameter(expectedReturnType);
|
|
152
|
+
const contextualReturnType = declaredReturnType ??
|
|
153
|
+
(shouldUseExpectedReturnType ? expectedReturnType : undefined);
|
|
154
|
+
// DETERMINISTIC: Pass expectedType for parameter type inference
|
|
155
|
+
const parameters = convertLambdaParameters(node, ctx, expectedType);
|
|
156
|
+
const bodyCtx = (() => {
|
|
157
|
+
const env = new Map(ctx.lambdaTypeEnv ?? []);
|
|
158
|
+
for (const p of parameters) {
|
|
159
|
+
if (p.pattern.kind === "identifierPattern" && p.type) {
|
|
160
|
+
env.set(p.pattern.name, p.type);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
return { ...ctx, lambdaTypeEnv: env };
|
|
164
|
+
})();
|
|
165
|
+
// Pass return type to body for contextual typing:
|
|
166
|
+
// - Block body: return statements get the expected type
|
|
167
|
+
// - Expression body: the expression gets the expected type
|
|
76
168
|
const body = ts.isBlock(node.body)
|
|
77
|
-
? convertBlockStatement(node.body,
|
|
78
|
-
: convertExpression(node.body,
|
|
169
|
+
? convertBlockStatement(node.body, bodyCtx, declaredReturnType ?? expectedReturnType)
|
|
170
|
+
: convertExpression(node.body, bodyCtx, contextualReturnType);
|
|
171
|
+
const returnType = declaredReturnType ??
|
|
172
|
+
(shouldUseExpectedReturnType
|
|
173
|
+
? expectedReturnType
|
|
174
|
+
: !ts.isBlock(node.body)
|
|
175
|
+
? body.inferredType ??
|
|
176
|
+
{ kind: "voidType" }
|
|
177
|
+
: expectedReturnType);
|
|
178
|
+
// DETERMINISTIC TYPING: contextualType comes from expectedType
|
|
179
|
+
const contextualType = expectedType;
|
|
180
|
+
// DETERMINISTIC: Build function type from declared parameters and return type
|
|
181
|
+
const inferredType = {
|
|
182
|
+
kind: "functionType",
|
|
183
|
+
parameters,
|
|
184
|
+
returnType: returnType ?? { kind: "voidType" },
|
|
185
|
+
};
|
|
79
186
|
return {
|
|
80
187
|
kind: "arrowFunction",
|
|
81
|
-
parameters
|
|
82
|
-
returnType
|
|
188
|
+
parameters,
|
|
189
|
+
returnType,
|
|
83
190
|
body,
|
|
84
191
|
isAsync: !!node.modifiers?.some((m) => m.kind === ts.SyntaxKind.AsyncKeyword),
|
|
85
|
-
inferredType
|
|
192
|
+
inferredType,
|
|
193
|
+
contextualType,
|
|
86
194
|
sourceSpan: getSourceSpan(node),
|
|
87
195
|
};
|
|
88
196
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"functions.js","sourceRoot":"","sources":["../../../../src/ir/converters/expressions/functions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"functions.js","sourceRoot":"","sources":["../../../../src/ir/converters/expressions/functions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,34 +1,35 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Helper functions for expression conversion
|
|
3
|
+
*
|
|
4
|
+
* ALICE'S SPEC: All type resolution goes through TypeSystem.
|
|
5
|
+
* NO getHandleRegistry() calls allowed here.
|
|
3
6
|
*/
|
|
4
7
|
import * as ts from "typescript";
|
|
5
8
|
import { IrType } from "../../types.js";
|
|
6
9
|
import { SourceLocation } from "../../../types/diagnostic.js";
|
|
10
|
+
import type { ProgramContext } from "../../program-context.js";
|
|
7
11
|
/**
|
|
8
12
|
* Get source span for a TypeScript node.
|
|
9
13
|
* Returns a SourceLocation that can be used for diagnostics.
|
|
10
14
|
*/
|
|
11
15
|
export declare const getSourceSpan: (node: ts.Node) => SourceLocation | undefined;
|
|
16
|
+
export declare const deriveIdentifierType: (node: ts.Identifier, ctx: ProgramContext) => IrType | undefined;
|
|
12
17
|
/**
|
|
13
|
-
*
|
|
14
|
-
* Prefers contextual type (from assignment target, return position, etc.)
|
|
15
|
-
* over literal type to handle cases like empty arrays `[]` correctly.
|
|
18
|
+
* Extract explicit type arguments from a call or new expression.
|
|
16
19
|
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
|
|
21
|
-
export declare const getInferredType: (node: ts.Node, checker: ts.TypeChecker) => IrType | undefined;
|
|
22
|
-
/**
|
|
23
|
-
* Extract type arguments from a call or new expression
|
|
24
|
-
* This captures both explicit type arguments and inferred ones
|
|
20
|
+
* DETERMINISTIC TYPING: Only returns type arguments that are explicitly
|
|
21
|
+
* specified in the source code. Does NOT use TypeScript's type inference
|
|
22
|
+
* to infer type arguments. For inferred type arguments, use expectedType
|
|
23
|
+
* threading in the caller (Step 6 of deterministic typing).
|
|
25
24
|
*/
|
|
26
|
-
export declare const extractTypeArguments: (node: ts.CallExpression | ts.NewExpression,
|
|
25
|
+
export declare const extractTypeArguments: (node: ts.CallExpression | ts.NewExpression, ctx: ProgramContext) => readonly IrType[] | undefined;
|
|
27
26
|
/**
|
|
28
27
|
* Check if a call/new expression requires specialization
|
|
29
28
|
* Returns true for conditional types, infer, variadic generics, this typing
|
|
29
|
+
*
|
|
30
|
+
* DETERMINISTIC: Uses Binding API to resolve signatures and extract declaration info.
|
|
30
31
|
*/
|
|
31
|
-
export declare const checkIfRequiresSpecialization: (node: ts.CallExpression | ts.NewExpression,
|
|
32
|
+
export declare const checkIfRequiresSpecialization: (node: ts.CallExpression | ts.NewExpression, ctx: ProgramContext) => boolean;
|
|
32
33
|
/**
|
|
33
34
|
* Convert TypeScript binary operator token to string
|
|
34
35
|
*/
|
|
@@ -38,16 +39,14 @@ export declare const convertBinaryOperator: (token: ts.BinaryOperatorToken) => s
|
|
|
38
39
|
*/
|
|
39
40
|
export declare const isAssignmentOperator: (token: ts.BinaryOperatorToken) => boolean;
|
|
40
41
|
/**
|
|
41
|
-
* Get the contextual type for an expression
|
|
42
|
-
* Returns an IrType with type arguments if the contextual type is a named type
|
|
43
|
-
* (interface, class, generic), or undefined if it's an anonymous/primitive type.
|
|
42
|
+
* Get the contextual type for an expression from explicit TypeNodes.
|
|
44
43
|
*
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
*
|
|
44
|
+
* DETERMINISTIC TYPING: Only extracts types from explicit TypeNodes in the
|
|
45
|
+
* source code. Does NOT use TypeScript's getContextualType (banned API).
|
|
46
|
+
* Returns undefined if no explicit type annotation is found.
|
|
47
|
+
*
|
|
48
|
+
* For complete expectedType threading (covering all contexts), see Step 6
|
|
49
|
+
* of deterministic typing implementation.
|
|
51
50
|
*/
|
|
52
|
-
export declare const
|
|
51
|
+
export declare const getContextualType: (node: ts.Expression, ctx: ProgramContext) => IrType | undefined;
|
|
53
52
|
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../../src/ir/converters/expressions/helpers.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../../src/ir/converters/expressions/helpers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE/D;;;GAGG;AACH,eAAO,MAAM,aAAa,GAAI,MAAM,EAAE,CAAC,IAAI,KAAG,cAAc,GAAG,SAc9D,CAAC;AAgLF,eAAO,MAAM,oBAAoB,GAC/B,MAAM,EAAE,CAAC,UAAU,EACnB,KAAK,cAAc,KAClB,MAAM,GAAG,SAeX,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,GAC/B,MAAM,EAAE,CAAC,cAAc,GAAG,EAAE,CAAC,aAAa,EAC1C,KAAK,cAAc,KAClB,SAAS,MAAM,EAAE,GAAG,SAkBtB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B,GACxC,MAAM,EAAE,CAAC,cAAc,GAAG,EAAE,CAAC,aAAa,EAC1C,KAAK,cAAc,KAClB,OA2BF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,GAChC,OAAO,EAAE,CAAC,mBAAmB,KAC5B,MA8CF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAC/B,OAAO,EAAE,CAAC,mBAAmB,KAC5B,OAKF,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB,GAC5B,MAAM,EAAE,CAAC,UAAU,EACnB,KAAK,cAAc,KAClB,MAAM,GAAG,SA0FX,CAAC"}
|