@tsonic/frontend 0.0.14 → 0.0.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -1
- package/dist/graph/builder.js +2 -2
- package/dist/graph/builder.js.map +1 -1
- package/dist/graph/extraction/imports.js +1 -1
- package/dist/graph/extraction/imports.js.map +1 -1
- package/dist/graph/extraction/orchestrator.d.ts.map +1 -1
- package/dist/graph/extraction/orchestrator.js +3 -2
- package/dist/graph/extraction/orchestrator.js.map +1 -1
- package/dist/ir/binding/index.d.ts +155 -0
- package/dist/ir/binding/index.d.ts.map +1 -0
- package/dist/ir/binding/index.js +1035 -0
- package/dist/ir/binding/index.js.map +1 -0
- package/dist/ir/binding-resolution.test.js +193 -52
- package/dist/ir/binding-resolution.test.js.map +1 -1
- package/dist/ir/bindings-disambiguation.test.d.ts +11 -0
- package/dist/ir/bindings-disambiguation.test.d.ts.map +1 -0
- package/dist/ir/bindings-disambiguation.test.js +416 -0
- package/dist/ir/bindings-disambiguation.test.js.map +1 -0
- package/dist/ir/builder/exports.d.ts +20 -2
- package/dist/ir/builder/exports.d.ts.map +1 -1
- package/dist/ir/builder/exports.js +65 -6
- package/dist/ir/builder/exports.js.map +1 -1
- package/dist/ir/builder/imports.d.ts +9 -5
- package/dist/ir/builder/imports.d.ts.map +1 -1
- package/dist/ir/builder/imports.js +20 -31
- package/dist/ir/builder/imports.js.map +1 -1
- package/dist/ir/builder/orchestrator.d.ts +10 -1
- package/dist/ir/builder/orchestrator.d.ts.map +1 -1
- package/dist/ir/builder/orchestrator.js +32 -15
- package/dist/ir/builder/orchestrator.js.map +1 -1
- package/dist/ir/builder/statements.d.ts +7 -1
- package/dist/ir/builder/statements.d.ts.map +1 -1
- package/dist/ir/builder/statements.js +7 -2
- package/dist/ir/builder/statements.js.map +1 -1
- package/dist/ir/builder/types.d.ts +2 -0
- package/dist/ir/builder/types.d.ts.map +1 -1
- package/dist/ir/builder/validation.d.ts +4 -1
- package/dist/ir/builder/validation.d.ts.map +1 -1
- package/dist/ir/builder/validation.js +37 -37
- package/dist/ir/builder/validation.js.map +1 -1
- package/dist/ir/builder.test.js +55 -112
- package/dist/ir/builder.test.js.map +1 -1
- package/dist/ir/converters/anonymous-synthesis.d.ts +30 -8
- package/dist/ir/converters/anonymous-synthesis.d.ts.map +1 -1
- package/dist/ir/converters/anonymous-synthesis.js +46 -55
- package/dist/ir/converters/anonymous-synthesis.js.map +1 -1
- package/dist/ir/converters/context.d.ts +40 -0
- package/dist/ir/converters/context.d.ts.map +1 -0
- package/dist/ir/converters/context.js +25 -0
- package/dist/ir/converters/context.js.map +1 -0
- package/dist/ir/converters/expressions/access.d.ts +6 -1
- package/dist/ir/converters/expressions/access.d.ts.map +1 -1
- package/dist/ir/converters/expressions/access.js +389 -43
- package/dist/ir/converters/expressions/access.js.map +1 -1
- package/dist/ir/converters/expressions/calls.d.ts +24 -3
- package/dist/ir/converters/expressions/calls.d.ts.map +1 -1
- package/dist/ir/converters/expressions/calls.js +674 -397
- package/dist/ir/converters/expressions/calls.js.map +1 -1
- package/dist/ir/converters/expressions/collections.d.ts +16 -3
- package/dist/ir/converters/expressions/collections.d.ts.map +1 -1
- package/dist/ir/converters/expressions/collections.js +300 -46
- package/dist/ir/converters/expressions/collections.js.map +1 -1
- package/dist/ir/converters/expressions/functions.d.ts +10 -3
- package/dist/ir/converters/expressions/functions.d.ts.map +1 -1
- package/dist/ir/converters/expressions/functions.js +158 -32
- package/dist/ir/converters/expressions/functions.js.map +1 -1
- package/dist/ir/converters/expressions/helpers.d.ts +22 -23
- package/dist/ir/converters/expressions/helpers.d.ts.map +1 -1
- package/dist/ir/converters/expressions/helpers.js +242 -239
- package/dist/ir/converters/expressions/helpers.js.map +1 -1
- package/dist/ir/converters/expressions/index.d.ts +1 -1
- package/dist/ir/converters/expressions/index.d.ts.map +1 -1
- package/dist/ir/converters/expressions/index.js +1 -1
- package/dist/ir/converters/expressions/index.js.map +1 -1
- package/dist/ir/converters/expressions/literals.d.ts +12 -12
- package/dist/ir/converters/expressions/literals.d.ts.map +1 -1
- package/dist/ir/converters/expressions/literals.js +62 -17
- package/dist/ir/converters/expressions/literals.js.map +1 -1
- package/dist/ir/converters/expressions/numeric-recovery.test.d.ts +5 -2
- package/dist/ir/converters/expressions/numeric-recovery.test.d.ts.map +1 -1
- package/dist/ir/converters/expressions/numeric-recovery.test.js +62 -49
- package/dist/ir/converters/expressions/numeric-recovery.test.js.map +1 -1
- package/dist/ir/converters/expressions/operators.d.ts +13 -4
- package/dist/ir/converters/expressions/operators.d.ts.map +1 -1
- package/dist/ir/converters/expressions/operators.js +183 -33
- package/dist/ir/converters/expressions/operators.js.map +1 -1
- package/dist/ir/converters/expressions/other.d.ts +11 -3
- package/dist/ir/converters/expressions/other.d.ts.map +1 -1
- package/dist/ir/converters/expressions/other.js +26 -10
- package/dist/ir/converters/expressions/other.js.map +1 -1
- package/dist/ir/converters/flow-narrowing.d.ts +27 -0
- package/dist/ir/converters/flow-narrowing.d.ts.map +1 -0
- package/dist/ir/converters/flow-narrowing.js +73 -0
- package/dist/ir/converters/flow-narrowing.js.map +1 -0
- package/dist/ir/converters/statements/control/blocks.d.ts +8 -2
- package/dist/ir/converters/statements/control/blocks.d.ts.map +1 -1
- package/dist/ir/converters/statements/control/blocks.js +7 -2
- package/dist/ir/converters/statements/control/blocks.js.map +1 -1
- package/dist/ir/converters/statements/control/conditionals.d.ts +14 -4
- package/dist/ir/converters/statements/control/conditionals.d.ts.map +1 -1
- package/dist/ir/converters/statements/control/conditionals.js +36 -10
- package/dist/ir/converters/statements/control/conditionals.js.map +1 -1
- package/dist/ir/converters/statements/control/exceptions.d.ts +10 -3
- package/dist/ir/converters/statements/control/exceptions.d.ts.map +1 -1
- package/dist/ir/converters/statements/control/exceptions.js +13 -7
- package/dist/ir/converters/statements/control/exceptions.js.map +1 -1
- package/dist/ir/converters/statements/control/loops.d.ts +16 -5
- package/dist/ir/converters/statements/control/loops.d.ts.map +1 -1
- package/dist/ir/converters/statements/control/loops.js +25 -15
- package/dist/ir/converters/statements/control/loops.js.map +1 -1
- package/dist/ir/converters/statements/declarations/classes/constructors.d.ts +3 -2
- package/dist/ir/converters/statements/declarations/classes/constructors.d.ts.map +1 -1
- package/dist/ir/converters/statements/declarations/classes/constructors.js +11 -7
- package/dist/ir/converters/statements/declarations/classes/constructors.js.map +1 -1
- package/dist/ir/converters/statements/declarations/classes/methods.d.ts +2 -1
- package/dist/ir/converters/statements/declarations/classes/methods.d.ts.map +1 -1
- package/dist/ir/converters/statements/declarations/classes/methods.js +63 -11
- package/dist/ir/converters/statements/declarations/classes/methods.js.map +1 -1
- package/dist/ir/converters/statements/declarations/classes/orchestrator.d.ts +2 -1
- package/dist/ir/converters/statements/declarations/classes/orchestrator.d.ts.map +1 -1
- package/dist/ir/converters/statements/declarations/classes/orchestrator.js +60 -40
- package/dist/ir/converters/statements/declarations/classes/orchestrator.js.map +1 -1
- package/dist/ir/converters/statements/declarations/classes/override-detection.d.ts +6 -2
- package/dist/ir/converters/statements/declarations/classes/override-detection.d.ts.map +1 -1
- package/dist/ir/converters/statements/declarations/classes/override-detection.js +49 -50
- package/dist/ir/converters/statements/declarations/classes/override-detection.js.map +1 -1
- package/dist/ir/converters/statements/declarations/classes/properties.d.ts +9 -1
- package/dist/ir/converters/statements/declarations/classes/properties.d.ts.map +1 -1
- package/dist/ir/converters/statements/declarations/classes/properties.js +119 -16
- package/dist/ir/converters/statements/declarations/classes/properties.js.map +1 -1
- package/dist/ir/converters/statements/declarations/enums.d.ts +2 -1
- package/dist/ir/converters/statements/declarations/enums.d.ts.map +1 -1
- package/dist/ir/converters/statements/declarations/enums.js +8 -2
- package/dist/ir/converters/statements/declarations/enums.js.map +1 -1
- package/dist/ir/converters/statements/declarations/functions.d.ts +2 -1
- package/dist/ir/converters/statements/declarations/functions.d.ts.map +1 -1
- package/dist/ir/converters/statements/declarations/functions.js +11 -6
- package/dist/ir/converters/statements/declarations/functions.js.map +1 -1
- package/dist/ir/converters/statements/declarations/index.d.ts +3 -1
- package/dist/ir/converters/statements/declarations/index.d.ts.map +1 -1
- package/dist/ir/converters/statements/declarations/index.js +3 -1
- package/dist/ir/converters/statements/declarations/index.js.map +1 -1
- package/dist/ir/converters/statements/declarations/interfaces.d.ts +3 -2
- package/dist/ir/converters/statements/declarations/interfaces.d.ts.map +1 -1
- package/dist/ir/converters/statements/declarations/interfaces.js +26 -20
- package/dist/ir/converters/statements/declarations/interfaces.js.map +1 -1
- package/dist/ir/converters/statements/declarations/registry.d.ts +72 -0
- package/dist/ir/converters/statements/declarations/registry.d.ts.map +1 -1
- package/dist/ir/converters/statements/declarations/registry.js +92 -0
- package/dist/ir/converters/statements/declarations/registry.js.map +1 -1
- package/dist/ir/converters/statements/declarations/type-aliases.d.ts +2 -1
- package/dist/ir/converters/statements/declarations/type-aliases.d.ts.map +1 -1
- package/dist/ir/converters/statements/declarations/type-aliases.js +6 -4
- package/dist/ir/converters/statements/declarations/type-aliases.js.map +1 -1
- package/dist/ir/converters/statements/declarations/variables.d.ts +11 -1
- package/dist/ir/converters/statements/declarations/variables.d.ts.map +1 -1
- package/dist/ir/converters/statements/declarations/variables.js +123 -19
- package/dist/ir/converters/statements/declarations/variables.js.map +1 -1
- package/dist/ir/converters/statements/declarations.d.ts +4 -1
- package/dist/ir/converters/statements/declarations.d.ts.map +1 -1
- package/dist/ir/converters/statements/declarations.js +4 -1
- package/dist/ir/converters/statements/declarations.js.map +1 -1
- package/dist/ir/converters/statements/helpers.d.ts +4 -3
- package/dist/ir/converters/statements/helpers.d.ts.map +1 -1
- package/dist/ir/converters/statements/helpers.js +55 -31
- package/dist/ir/converters/statements/helpers.js.map +1 -1
- package/dist/ir/converters/statements/index.d.ts +1 -1
- package/dist/ir/converters/statements/index.d.ts.map +1 -1
- package/dist/ir/converters/statements/index.js +2 -1
- package/dist/ir/converters/statements/index.js.map +1 -1
- package/dist/ir/expression-converter.d.ts +10 -3
- package/dist/ir/expression-converter.d.ts.map +1 -1
- package/dist/ir/expression-converter.js +139 -57
- package/dist/ir/expression-converter.js.map +1 -1
- package/dist/ir/hierarchical-bindings-e2e.test.js +10 -6
- package/dist/ir/hierarchical-bindings-e2e.test.js.map +1 -1
- package/dist/ir/index.d.ts +5 -0
- package/dist/ir/index.d.ts.map +1 -1
- package/dist/ir/index.js +5 -0
- package/dist/ir/index.js.map +1 -1
- package/dist/ir/no-ts-type-inference.test.d.ts +17 -0
- package/dist/ir/no-ts-type-inference.test.d.ts.map +1 -0
- package/dist/ir/no-ts-type-inference.test.js +171 -0
- package/dist/ir/no-ts-type-inference.test.js.map +1 -0
- package/dist/ir/program-context.d.ts +87 -0
- package/dist/ir/program-context.d.ts.map +1 -0
- package/dist/ir/program-context.js +289 -0
- package/dist/ir/program-context.js.map +1 -0
- package/dist/ir/statement-converter.d.ts +14 -4
- package/dist/ir/statement-converter.d.ts.map +1 -1
- package/dist/ir/statement-converter.js +31 -21
- package/dist/ir/statement-converter.js.map +1 -1
- package/dist/ir/syntax/binding-patterns.d.ts +22 -0
- package/dist/ir/syntax/binding-patterns.d.ts.map +1 -0
- package/dist/ir/{type-converter/patterns.js → syntax/binding-patterns.js} +34 -8
- package/dist/ir/syntax/binding-patterns.js.map +1 -0
- package/dist/ir/thisarg-inference.test.d.ts +8 -0
- package/dist/ir/thisarg-inference.test.d.ts.map +1 -0
- package/dist/ir/thisarg-inference.test.js +94 -0
- package/dist/ir/thisarg-inference.test.js.map +1 -0
- package/dist/ir/type-system/index.d.ts +21 -0
- package/dist/ir/type-system/index.d.ts.map +1 -0
- package/dist/ir/type-system/index.js +43 -0
- package/dist/ir/type-system/index.js.map +1 -0
- package/dist/ir/type-system/internal/handle-types.d.ts +105 -0
- package/dist/ir/type-system/internal/handle-types.d.ts.map +1 -0
- package/dist/ir/type-system/internal/handle-types.js +13 -0
- package/dist/ir/type-system/internal/handle-types.js.map +1 -0
- package/dist/ir/type-system/internal/nominal-env.d.ts +66 -0
- package/dist/ir/type-system/internal/nominal-env.d.ts.map +1 -0
- package/dist/ir/type-system/internal/nominal-env.js +301 -0
- package/dist/ir/type-system/internal/nominal-env.js.map +1 -0
- package/dist/ir/type-system/internal/type-converter/arrays.d.ts +11 -0
- package/dist/ir/type-system/internal/type-converter/arrays.d.ts.map +1 -0
- package/dist/ir/{type-converter → type-system/internal/type-converter}/arrays.js +2 -2
- package/dist/ir/type-system/internal/type-converter/arrays.js.map +1 -0
- package/dist/ir/type-system/internal/type-converter/converter.d.ts +17 -0
- package/dist/ir/type-system/internal/type-converter/converter.d.ts.map +1 -0
- package/dist/ir/type-system/internal/type-converter/converter.js +16 -0
- package/dist/ir/type-system/internal/type-converter/converter.js.map +1 -0
- package/dist/ir/type-system/internal/type-converter/functions.d.ts +14 -0
- package/dist/ir/type-system/internal/type-converter/functions.d.ts.map +1 -0
- package/dist/ir/type-system/internal/type-converter/functions.js +66 -0
- package/dist/ir/type-system/internal/type-converter/functions.js.map +1 -0
- package/dist/ir/type-system/internal/type-converter/index.d.ts +11 -0
- package/dist/ir/type-system/internal/type-converter/index.d.ts.map +1 -0
- package/dist/ir/type-system/internal/type-converter/index.js +11 -0
- package/dist/ir/type-system/internal/type-converter/index.js.map +1 -0
- package/dist/ir/type-system/internal/type-converter/inference.d.ts +37 -0
- package/dist/ir/type-system/internal/type-converter/inference.d.ts.map +1 -0
- package/dist/ir/type-system/internal/type-converter/inference.js +32 -0
- package/dist/ir/type-system/internal/type-converter/inference.js.map +1 -0
- package/dist/ir/{type-converter → type-system/internal/type-converter}/literals.d.ts +1 -1
- package/dist/ir/type-system/internal/type-converter/literals.d.ts.map +1 -0
- package/dist/ir/type-system/internal/type-converter/literals.js.map +1 -0
- package/dist/ir/type-system/internal/type-converter/objects.d.ts +20 -0
- package/dist/ir/type-system/internal/type-converter/objects.d.ts.map +1 -0
- package/dist/ir/{type-converter → type-system/internal/type-converter}/objects.js +56 -6
- package/dist/ir/type-system/internal/type-converter/objects.js.map +1 -0
- package/dist/ir/{type-converter → type-system/internal/type-converter}/orchestrator.d.ts +3 -2
- package/dist/ir/type-system/internal/type-converter/orchestrator.d.ts.map +1 -0
- package/dist/ir/{type-converter → type-system/internal/type-converter}/orchestrator.js +63 -21
- package/dist/ir/type-system/internal/type-converter/orchestrator.js.map +1 -0
- package/dist/ir/{type-converter → type-system/internal/type-converter}/primitives.d.ts +4 -4
- package/dist/ir/type-system/internal/type-converter/primitives.d.ts.map +1 -0
- package/dist/ir/{type-converter → type-system/internal/type-converter}/primitives.js +2 -2
- package/dist/ir/type-system/internal/type-converter/primitives.js.map +1 -0
- package/dist/ir/{type-converter → type-system/internal/type-converter}/references.d.ts +3 -2
- package/dist/ir/type-system/internal/type-converter/references.d.ts.map +1 -0
- package/dist/ir/type-system/internal/type-converter/references.js +545 -0
- package/dist/ir/type-system/internal/type-converter/references.js.map +1 -0
- package/dist/ir/type-system/internal/type-converter/unions-intersections.d.ts +15 -0
- package/dist/ir/type-system/internal/type-converter/unions-intersections.d.ts.map +1 -0
- package/dist/ir/type-system/internal/type-converter/unions-intersections.js +22 -0
- package/dist/ir/type-system/internal/type-converter/unions-intersections.js.map +1 -0
- package/dist/ir/{type-converter → type-system/internal/type-converter}/utility-types.d.ts +23 -36
- package/dist/ir/type-system/internal/type-converter/utility-types.d.ts.map +1 -0
- package/dist/ir/type-system/internal/type-converter/utility-types.js +879 -0
- package/dist/ir/type-system/internal/type-converter/utility-types.js.map +1 -0
- package/dist/ir/type-system/internal/type-converter/utility-types.test.d.ts.map +1 -0
- package/dist/ir/{type-converter → type-system/internal/type-converter}/utility-types.test.js +398 -120
- package/dist/ir/type-system/internal/type-converter/utility-types.test.js.map +1 -0
- package/dist/ir/type-system/internal/type-converter.d.ts +9 -0
- package/dist/ir/type-system/internal/type-converter.d.ts.map +1 -0
- package/dist/ir/type-system/internal/type-converter.js +9 -0
- package/dist/ir/type-system/internal/type-converter.js.map +1 -0
- package/dist/ir/type-system/internal/type-registry.d.ts +112 -0
- package/dist/ir/type-system/internal/type-registry.d.ts.map +1 -0
- package/dist/ir/type-system/internal/type-registry.js +535 -0
- package/dist/ir/type-system/internal/type-registry.js.map +1 -0
- package/dist/ir/type-system/internal/universe/alias-table.d.ts +92 -0
- package/dist/ir/type-system/internal/universe/alias-table.d.ts.map +1 -0
- package/dist/ir/type-system/internal/universe/alias-table.js +222 -0
- package/dist/ir/type-system/internal/universe/alias-table.js.map +1 -0
- package/dist/ir/type-system/internal/universe/clr-catalog.d.ts +44 -0
- package/dist/ir/type-system/internal/universe/clr-catalog.d.ts.map +1 -0
- package/dist/ir/type-system/internal/universe/clr-catalog.js +1192 -0
- package/dist/ir/type-system/internal/universe/clr-catalog.js.map +1 -0
- package/dist/ir/type-system/internal/universe/index.d.ts +26 -0
- package/dist/ir/type-system/internal/universe/index.d.ts.map +1 -0
- package/dist/ir/type-system/internal/universe/index.js +30 -0
- package/dist/ir/type-system/internal/universe/index.js.map +1 -0
- package/dist/ir/type-system/internal/universe/resolution.d.ts +115 -0
- package/dist/ir/type-system/internal/universe/resolution.d.ts.map +1 -0
- package/dist/ir/type-system/internal/universe/resolution.js +181 -0
- package/dist/ir/type-system/internal/universe/resolution.js.map +1 -0
- package/dist/ir/type-system/internal/universe/source-catalog.d.ts +64 -0
- package/dist/ir/type-system/internal/universe/source-catalog.d.ts.map +1 -0
- package/dist/ir/type-system/internal/universe/source-catalog.js +96 -0
- package/dist/ir/type-system/internal/universe/source-catalog.js.map +1 -0
- package/dist/ir/type-system/internal/universe/types.d.ts +436 -0
- package/dist/ir/type-system/internal/universe/types.d.ts.map +1 -0
- package/dist/ir/type-system/internal/universe/types.js +69 -0
- package/dist/ir/type-system/internal/universe/types.js.map +1 -0
- package/dist/ir/type-system/internal/universe/unified-universe.d.ts +70 -0
- package/dist/ir/type-system/internal/universe/unified-universe.d.ts.map +1 -0
- package/dist/ir/type-system/internal/universe/unified-universe.js +319 -0
- package/dist/ir/type-system/internal/universe/unified-universe.js.map +1 -0
- package/dist/ir/type-system/type-system.d.ts +617 -0
- package/dist/ir/type-system/type-system.d.ts.map +1 -0
- package/dist/ir/type-system/type-system.js +2579 -0
- package/dist/ir/type-system/type-system.js.map +1 -0
- package/dist/ir/type-system/types.d.ts +176 -0
- package/dist/ir/type-system/types.d.ts.map +1 -0
- package/dist/ir/type-system/types.js +80 -0
- package/dist/ir/type-system/types.js.map +1 -0
- package/dist/ir/types/expressions.d.ts +35 -7
- package/dist/ir/types/expressions.d.ts.map +1 -1
- package/dist/ir/types/helpers.d.ts +22 -2
- package/dist/ir/types/helpers.d.ts.map +1 -1
- package/dist/ir/types/index.d.ts +4 -2
- package/dist/ir/types/index.d.ts.map +1 -1
- package/dist/ir/types/index.js +1 -0
- package/dist/ir/types/index.js.map +1 -1
- package/dist/ir/types/ir-substitution.d.ts +144 -0
- package/dist/ir/types/ir-substitution.d.ts.map +1 -0
- package/dist/ir/types/ir-substitution.js +569 -0
- package/dist/ir/types/ir-substitution.js.map +1 -0
- package/dist/ir/types/ir-types.d.ts +10 -4
- package/dist/ir/types/ir-types.d.ts.map +1 -1
- package/dist/ir/types/numeric-helpers.d.ts +2 -1
- package/dist/ir/types/numeric-helpers.d.ts.map +1 -1
- package/dist/ir/types/numeric-helpers.js +9 -3
- package/dist/ir/types/numeric-helpers.js.map +1 -1
- package/dist/ir/types/statements.d.ts +22 -1
- package/dist/ir/types/statements.d.ts.map +1 -1
- package/dist/ir/types.d.ts +1 -1
- package/dist/ir/types.d.ts.map +1 -1
- package/dist/ir/types.js.map +1 -1
- package/dist/ir/validation/anonymous-type-lowering-pass.d.ts.map +1 -1
- package/dist/ir/validation/anonymous-type-lowering-pass.js +153 -8
- package/dist/ir/validation/anonymous-type-lowering-pass.js.map +1 -1
- package/dist/ir/validation/arrow-return-finalization-pass.d.ts +28 -0
- package/dist/ir/validation/arrow-return-finalization-pass.d.ts.map +1 -0
- package/dist/ir/validation/arrow-return-finalization-pass.js +416 -0
- package/dist/ir/validation/arrow-return-finalization-pass.js.map +1 -0
- package/dist/ir/validation/attribute-collection-pass.d.ts.map +1 -1
- package/dist/ir/validation/attribute-collection-pass.js +40 -6
- package/dist/ir/validation/attribute-collection-pass.js.map +1 -1
- package/dist/ir/validation/attribute-collection-pass.test.js +43 -36
- package/dist/ir/validation/attribute-collection-pass.test.js.map +1 -1
- package/dist/ir/validation/char-validation-pass.d.ts +26 -0
- package/dist/ir/validation/char-validation-pass.d.ts.map +1 -0
- package/dist/ir/validation/char-validation-pass.js +495 -0
- package/dist/ir/validation/char-validation-pass.js.map +1 -0
- package/dist/ir/validation/index.d.ts +3 -0
- package/dist/ir/validation/index.d.ts.map +1 -1
- package/dist/ir/validation/index.js +3 -0
- package/dist/ir/validation/index.js.map +1 -1
- package/dist/ir/validation/numeric-coercion-pass.d.ts +22 -16
- package/dist/ir/validation/numeric-coercion-pass.d.ts.map +1 -1
- package/dist/ir/validation/numeric-coercion-pass.js +159 -51
- package/dist/ir/validation/numeric-coercion-pass.js.map +1 -1
- package/dist/ir/validation/numeric-invariants.test.js +72 -108
- package/dist/ir/validation/numeric-invariants.test.js.map +1 -1
- package/dist/ir/validation/numeric-proof-pass.d.ts.map +1 -1
- package/dist/ir/validation/numeric-proof-pass.js +71 -23
- package/dist/ir/validation/numeric-proof-pass.js.map +1 -1
- package/dist/ir/validation/rest-type-synthesis-pass.d.ts +24 -0
- package/dist/ir/validation/rest-type-synthesis-pass.d.ts.map +1 -0
- package/dist/ir/validation/rest-type-synthesis-pass.js +417 -0
- package/dist/ir/validation/rest-type-synthesis-pass.js.map +1 -0
- package/dist/ir/validation/soundness-gate.d.ts +11 -1
- package/dist/ir/validation/soundness-gate.d.ts.map +1 -1
- package/dist/ir/validation/soundness-gate.js +42 -10
- package/dist/ir/validation/soundness-gate.js.map +1 -1
- package/dist/ir/validation/soundness-gate.test.js +19 -2
- package/dist/ir/validation/soundness-gate.test.js.map +1 -1
- package/dist/ir/validation/virtual-marking-pass.d.ts +16 -0
- package/dist/ir/validation/virtual-marking-pass.d.ts.map +1 -0
- package/dist/ir/validation/virtual-marking-pass.js +77 -0
- package/dist/ir/validation/virtual-marking-pass.js.map +1 -0
- package/dist/ir/validation/yield-lowering-pass.test.js +2 -2
- package/dist/ir/validation/yield-lowering-pass.test.js.map +1 -1
- package/dist/program/bindings.d.ts +44 -0
- package/dist/program/bindings.d.ts.map +1 -1
- package/dist/program/bindings.js +248 -2
- package/dist/program/bindings.js.map +1 -1
- package/dist/program/bindings.test.js +30 -0
- package/dist/program/bindings.test.js.map +1 -1
- package/dist/program/creation.d.ts.map +1 -1
- package/dist/program/creation.js +158 -4
- package/dist/program/creation.js.map +1 -1
- package/dist/program/dependency-graph.d.ts.map +1 -1
- package/dist/program/dependency-graph.js +33 -26
- package/dist/program/dependency-graph.js.map +1 -1
- package/dist/program/index.d.ts +1 -1
- package/dist/program/index.d.ts.map +1 -1
- package/dist/program/types.d.ts +7 -8
- package/dist/program/types.d.ts.map +1 -1
- package/dist/resolver/clr-bindings-resolver.d.ts +6 -0
- package/dist/resolver/clr-bindings-resolver.d.ts.map +1 -1
- package/dist/resolver/clr-bindings-resolver.js +185 -39
- package/dist/resolver/clr-bindings-resolver.js.map +1 -1
- package/dist/resolver/clr-bindings-resolver.test.d.ts +2 -0
- package/dist/resolver/clr-bindings-resolver.test.d.ts.map +1 -0
- package/dist/resolver/clr-bindings-resolver.test.js +161 -0
- package/dist/resolver/clr-bindings-resolver.test.js.map +1 -0
- package/dist/resolver/import-resolution.d.ts +16 -1
- package/dist/resolver/import-resolution.d.ts.map +1 -1
- package/dist/resolver/import-resolution.js +29 -12
- package/dist/resolver/import-resolution.js.map +1 -1
- package/dist/resolver/namespace.d.ts +2 -1
- package/dist/resolver/namespace.d.ts.map +1 -1
- package/dist/resolver/namespace.js +5 -2
- package/dist/resolver/namespace.js.map +1 -1
- package/dist/resolver/namespace.test.js +6 -6
- package/dist/resolver/naming-policy.d.ts +20 -0
- package/dist/resolver/naming-policy.d.ts.map +1 -0
- package/dist/resolver/naming-policy.js +40 -0
- package/dist/resolver/naming-policy.js.map +1 -0
- package/dist/resolver/naming.d.ts +2 -5
- package/dist/resolver/naming.d.ts.map +1 -1
- package/dist/resolver/naming.js +3 -20
- package/dist/resolver/naming.js.map +1 -1
- package/dist/resolver.d.ts +2 -0
- package/dist/resolver.d.ts.map +1 -1
- package/dist/resolver.js +1 -0
- package/dist/resolver.js.map +1 -1
- package/dist/resolver.test.js +8 -3
- package/dist/resolver.test.js.map +1 -1
- package/dist/symbol-table/builder.d.ts +3 -1
- package/dist/symbol-table/builder.d.ts.map +1 -1
- package/dist/symbol-table/builder.js +9 -8
- package/dist/symbol-table/builder.js.map +1 -1
- package/dist/symbol-table/types.d.ts +2 -2
- package/dist/symbol-table/types.d.ts.map +1 -1
- package/dist/types/diagnostic.d.ts +12 -2
- package/dist/types/diagnostic.d.ts.map +1 -1
- package/dist/types/diagnostic.js +5 -1
- package/dist/types/diagnostic.js.map +1 -1
- package/dist/validation/core-intrinsics.d.ts +18 -0
- package/dist/validation/core-intrinsics.d.ts.map +1 -0
- package/dist/validation/core-intrinsics.js +186 -0
- package/dist/validation/core-intrinsics.js.map +1 -0
- package/dist/validation/extension-methods.d.ts +17 -0
- package/dist/validation/extension-methods.d.ts.map +1 -0
- package/dist/validation/extension-methods.js +133 -0
- package/dist/validation/extension-methods.js.map +1 -0
- package/dist/validation/generics.d.ts.map +1 -1
- package/dist/validation/generics.js +1 -129
- package/dist/validation/generics.js.map +1 -1
- package/dist/validation/imports.js +1 -1
- package/dist/validation/imports.js.map +1 -1
- package/dist/validation/index.d.ts +2 -0
- package/dist/validation/index.d.ts.map +1 -1
- package/dist/validation/index.js +2 -0
- package/dist/validation/index.js.map +1 -1
- package/dist/validation/orchestrator.d.ts.map +1 -1
- package/dist/validation/orchestrator.js +4 -0
- package/dist/validation/orchestrator.js.map +1 -1
- package/dist/validation/static-safety.d.ts +1 -0
- package/dist/validation/static-safety.d.ts.map +1 -1
- package/dist/validation/static-safety.js +366 -96
- package/dist/validation/static-safety.js.map +1 -1
- package/dist/validator.test.js +123 -1
- package/dist/validator.test.js.map +1 -1
- package/package.json +2 -2
- package/dist/ir/type-converter/arrays.d.ts +0 -10
- package/dist/ir/type-converter/arrays.d.ts.map +0 -1
- package/dist/ir/type-converter/arrays.js.map +0 -1
- package/dist/ir/type-converter/converter.d.ts +0 -6
- package/dist/ir/type-converter/converter.d.ts.map +0 -1
- package/dist/ir/type-converter/converter.js +0 -6
- package/dist/ir/type-converter/converter.js.map +0 -1
- package/dist/ir/type-converter/functions.d.ts +0 -10
- package/dist/ir/type-converter/functions.d.ts.map +0 -1
- package/dist/ir/type-converter/functions.js +0 -15
- package/dist/ir/type-converter/functions.js.map +0 -1
- package/dist/ir/type-converter/index.d.ts +0 -7
- package/dist/ir/type-converter/index.d.ts.map +0 -1
- package/dist/ir/type-converter/index.js +0 -7
- package/dist/ir/type-converter/index.js.map +0 -1
- package/dist/ir/type-converter/inference.d.ts +0 -32
- package/dist/ir/type-converter/inference.d.ts.map +0 -1
- package/dist/ir/type-converter/inference.js +0 -297
- package/dist/ir/type-converter/inference.js.map +0 -1
- package/dist/ir/type-converter/literals.d.ts.map +0 -1
- package/dist/ir/type-converter/literals.js.map +0 -1
- package/dist/ir/type-converter/objects.d.ts +0 -16
- package/dist/ir/type-converter/objects.d.ts.map +0 -1
- package/dist/ir/type-converter/objects.js.map +0 -1
- package/dist/ir/type-converter/orchestrator.d.ts.map +0 -1
- package/dist/ir/type-converter/orchestrator.js.map +0 -1
- package/dist/ir/type-converter/patterns.d.ts +0 -10
- package/dist/ir/type-converter/patterns.d.ts.map +0 -1
- package/dist/ir/type-converter/patterns.js.map +0 -1
- package/dist/ir/type-converter/primitives.d.ts.map +0 -1
- package/dist/ir/type-converter/primitives.js.map +0 -1
- package/dist/ir/type-converter/references.d.ts.map +0 -1
- package/dist/ir/type-converter/references.js +0 -371
- package/dist/ir/type-converter/references.js.map +0 -1
- package/dist/ir/type-converter/unions-intersections.d.ts +0 -14
- package/dist/ir/type-converter/unions-intersections.d.ts.map +0 -1
- package/dist/ir/type-converter/unions-intersections.js +0 -22
- package/dist/ir/type-converter/unions-intersections.js.map +0 -1
- package/dist/ir/type-converter/utility-types.d.ts.map +0 -1
- package/dist/ir/type-converter/utility-types.js +0 -528
- package/dist/ir/type-converter/utility-types.js.map +0 -1
- package/dist/ir/type-converter/utility-types.test.d.ts.map +0 -1
- package/dist/ir/type-converter/utility-types.test.js.map +0 -1
- package/dist/ir/type-converter.d.ts +0 -6
- package/dist/ir/type-converter.d.ts.map +0 -1
- package/dist/ir/type-converter.js +0 -6
- package/dist/ir/type-converter.js.map +0 -1
- /package/dist/ir/{type-converter → type-system/internal/type-converter}/literals.js +0 -0
- /package/dist/ir/{type-converter → type-system/internal/type-converter}/utility-types.test.d.ts +0 -0
|
@@ -1,17 +1,87 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Member access expression converters
|
|
3
|
+
*
|
|
4
|
+
* ALICE'S SPEC: All member type queries go through TypeSystem.typeOfMember().
|
|
5
|
+
* Falls back to Binding-resolved MemberId only when the receiver type cannot
|
|
6
|
+
* be normalized nominally (e.g., tsbindgen `$instance & __views` intersections).
|
|
3
7
|
*/
|
|
4
8
|
import * as ts from "typescript";
|
|
5
|
-
import {
|
|
9
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
10
|
+
import { dirname, join } from "node:path";
|
|
11
|
+
import { getSourceSpan } from "./helpers.js";
|
|
6
12
|
import { convertExpression } from "../../expression-converter.js";
|
|
7
|
-
import {
|
|
13
|
+
import { createDiagnostic } from "../../../types/diagnostic.js";
|
|
14
|
+
/**
|
|
15
|
+
* Fallback for getDeclaredPropertyType when TypeSystem can't resolve the member.
|
|
16
|
+
* Uses TypeSystem.typeOfMemberId() to get member types for:
|
|
17
|
+
* - Built-in types from globals (Array.length, string.length, etc.)
|
|
18
|
+
* - CLR-bound types from tsbindgen
|
|
19
|
+
* - Types with inherited members not in TypeRegistry
|
|
20
|
+
*
|
|
21
|
+
* ALICE'S SPEC: Uses TypeSystem as single source of truth.
|
|
22
|
+
*/
|
|
23
|
+
const getDeclaredPropertyTypeFallback = (node, ctx) => {
|
|
24
|
+
// ALICE'S SPEC: Use TypeSystem.typeOfMemberId() to get member type
|
|
25
|
+
const typeSystem = ctx.typeSystem;
|
|
26
|
+
// Resolve property member through Binding layer
|
|
27
|
+
const memberId = ctx.binding.resolvePropertyAccess(node);
|
|
28
|
+
if (!memberId)
|
|
29
|
+
return undefined;
|
|
30
|
+
// Use TypeSystem.typeOfMemberId() to get the member's declared type
|
|
31
|
+
const memberType = typeSystem.typeOfMemberId(memberId);
|
|
32
|
+
// If TypeSystem returns unknownType, treat as not found
|
|
33
|
+
if (memberType.kind === "unknownType") {
|
|
34
|
+
return undefined;
|
|
35
|
+
}
|
|
36
|
+
return memberType;
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Get the declared property type from a property access expression.
|
|
40
|
+
*
|
|
41
|
+
* ALICE'S SPEC: Uses TypeSystem.typeOfMember() as primary source.
|
|
42
|
+
* Falls back to Binding for inherited members not in TypeRegistry.
|
|
43
|
+
*
|
|
44
|
+
* @param node - Property access expression node
|
|
45
|
+
* @param receiverIrType - Already-computed IR type of the receiver (object) expression
|
|
46
|
+
* @param ctx - ProgramContext for type system and binding access
|
|
47
|
+
* @returns The deterministically computed property type
|
|
48
|
+
*/
|
|
49
|
+
const getDeclaredPropertyType = (node, receiverIrType, ctx) => {
|
|
50
|
+
const DEBUG = process.env.DEBUG_PROPERTY_TYPE === "1";
|
|
51
|
+
const propertyName = node.name.text;
|
|
52
|
+
if (DEBUG) {
|
|
53
|
+
console.log("[getDeclaredPropertyType]", propertyName, "on receiver:", receiverIrType);
|
|
54
|
+
}
|
|
55
|
+
// Try TypeSystem.typeOfMember() first
|
|
56
|
+
const typeSystem = ctx.typeSystem;
|
|
57
|
+
if (receiverIrType && receiverIrType.kind !== "unknownType") {
|
|
58
|
+
const memberType = typeSystem.typeOfMember(receiverIrType, {
|
|
59
|
+
kind: "byName",
|
|
60
|
+
name: propertyName,
|
|
61
|
+
});
|
|
62
|
+
if (DEBUG) {
|
|
63
|
+
console.log("[getDeclaredPropertyType]", propertyName, "TypeSystem returned:", memberType);
|
|
64
|
+
}
|
|
65
|
+
// If TypeSystem returned a valid type (not unknownType), use it
|
|
66
|
+
if (memberType.kind !== "unknownType") {
|
|
67
|
+
return memberType;
|
|
68
|
+
}
|
|
69
|
+
// Fall through to Binding fallback
|
|
70
|
+
}
|
|
71
|
+
// Fallback: Use Binding for inherited members not in TypeRegistry
|
|
72
|
+
// (e.g., Array.length from Array$instance)
|
|
73
|
+
const fallbackResult = getDeclaredPropertyTypeFallback(node, ctx);
|
|
74
|
+
if (DEBUG) {
|
|
75
|
+
console.log("[getDeclaredPropertyType]", propertyName, "fallback returned:", fallbackResult);
|
|
76
|
+
}
|
|
77
|
+
return fallbackResult;
|
|
78
|
+
};
|
|
8
79
|
/**
|
|
9
80
|
* Classify computed member access for proof pass.
|
|
10
81
|
* This determines whether Int32 proof is required for the index.
|
|
11
82
|
*
|
|
12
83
|
* Classification is based on IR type kinds, NOT string matching.
|
|
13
|
-
*
|
|
14
|
-
* so we use clrIndexer as the default for TypeScript arrays.
|
|
84
|
+
* CLR indexers (arrays, List<T>, etc.) require Int32 proof for indices.
|
|
15
85
|
*
|
|
16
86
|
* IMPORTANT: If classification cannot be determined reliably, returns "unknown"
|
|
17
87
|
* which causes a compile-time error (TSN5109). This is safer than misclassifying.
|
|
@@ -70,6 +140,16 @@ const classifyComputedAccess = (objectType) => {
|
|
|
70
140
|
const extractTypeName = (inferredType) => {
|
|
71
141
|
if (!inferredType)
|
|
72
142
|
return undefined;
|
|
143
|
+
// Handle common nullish unions like `Uri | undefined` by stripping null/undefined.
|
|
144
|
+
// This enables CLR member binding after explicit null checks in source code.
|
|
145
|
+
if (inferredType.kind === "unionType") {
|
|
146
|
+
const nonNullish = inferredType.types.filter((t) => !(t.kind === "primitiveType" &&
|
|
147
|
+
(t.name === "null" || t.name === "undefined")));
|
|
148
|
+
if (nonNullish.length === 1) {
|
|
149
|
+
const only = nonNullish[0];
|
|
150
|
+
return only ? extractTypeName(only) : undefined;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
73
153
|
// Handle primitive types - map to their CLR type names for binding lookup
|
|
74
154
|
// This enables binding resolution for methods like string.split(), number.toString()
|
|
75
155
|
if (inferredType.kind === "primitiveType") {
|
|
@@ -80,6 +160,8 @@ const extractTypeName = (inferredType) => {
|
|
|
80
160
|
return "Double"; // System.Double (TS number is double)
|
|
81
161
|
case "boolean":
|
|
82
162
|
return "Boolean"; // System.Boolean
|
|
163
|
+
case "char":
|
|
164
|
+
return "Char"; // System.Char
|
|
83
165
|
default:
|
|
84
166
|
return undefined;
|
|
85
167
|
}
|
|
@@ -136,8 +218,42 @@ const extractTypeName = (inferredType) => {
|
|
|
136
218
|
* Resolve hierarchical binding for a member access
|
|
137
219
|
* Handles namespace.type, type.member, directType.member, and instance.member patterns
|
|
138
220
|
*/
|
|
139
|
-
const resolveHierarchicalBinding = (object, propertyName) => {
|
|
140
|
-
const registry =
|
|
221
|
+
const resolveHierarchicalBinding = (object, propertyName, ctx) => {
|
|
222
|
+
const registry = ctx.bindings;
|
|
223
|
+
const toIrMemberBinding = (overloads) => {
|
|
224
|
+
const first = overloads[0];
|
|
225
|
+
if (!first)
|
|
226
|
+
return undefined;
|
|
227
|
+
const getTargetKey = (m) => `${m.binding.assembly}:${m.binding.type}::${m.binding.member}`;
|
|
228
|
+
const targetKey = getTargetKey(first);
|
|
229
|
+
if (overloads.some((m) => getTargetKey(m) !== targetKey)) {
|
|
230
|
+
// Unsafe: overloads map to different CLR targets.
|
|
231
|
+
return undefined;
|
|
232
|
+
}
|
|
233
|
+
const getModifiersKey = (m) => {
|
|
234
|
+
const mods = m.parameterModifiers ?? [];
|
|
235
|
+
if (mods.length === 0)
|
|
236
|
+
return "";
|
|
237
|
+
return [...mods]
|
|
238
|
+
.slice()
|
|
239
|
+
.sort((a, b) => a.index - b.index)
|
|
240
|
+
.map((mod) => `${mod.index}:${mod.modifier}`)
|
|
241
|
+
.join(",");
|
|
242
|
+
};
|
|
243
|
+
const modsKey = getModifiersKey(first);
|
|
244
|
+
const modsConsistent = overloads.every((m) => getModifiersKey(m) === modsKey);
|
|
245
|
+
return {
|
|
246
|
+
assembly: first.binding.assembly,
|
|
247
|
+
type: first.binding.type,
|
|
248
|
+
member: first.binding.member,
|
|
249
|
+
// IMPORTANT: Only attach parameterModifiers if consistent across all overloads.
|
|
250
|
+
// Overloads can differ in ref/out/in, and those must be selected at call time.
|
|
251
|
+
parameterModifiers: modsConsistent && first.parameterModifiers && first.parameterModifiers.length > 0
|
|
252
|
+
? first.parameterModifiers
|
|
253
|
+
: undefined,
|
|
254
|
+
isExtensionMethod: first.isExtensionMethod,
|
|
255
|
+
};
|
|
256
|
+
};
|
|
141
257
|
// Case 1: object is identifier → check if it's a namespace, then check if property is a type
|
|
142
258
|
if (object.kind === "identifier") {
|
|
143
259
|
const namespace = registry.getNamespace(object.name);
|
|
@@ -157,16 +273,10 @@ const resolveHierarchicalBinding = (object, propertyName) => {
|
|
|
157
273
|
const directType = registry.getType(object.name) ??
|
|
158
274
|
(object.originalName ? registry.getType(object.originalName) : undefined);
|
|
159
275
|
if (directType) {
|
|
160
|
-
const
|
|
161
|
-
if (
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
assembly: member.binding.assembly,
|
|
165
|
-
type: member.binding.type,
|
|
166
|
-
member: member.binding.member,
|
|
167
|
-
parameterModifiers: member.parameterModifiers,
|
|
168
|
-
};
|
|
169
|
-
}
|
|
276
|
+
const overloads = registry.getMemberOverloads(directType.alias, propertyName);
|
|
277
|
+
if (!overloads || overloads.length === 0)
|
|
278
|
+
return undefined;
|
|
279
|
+
return toIrMemberBinding(overloads);
|
|
170
280
|
}
|
|
171
281
|
}
|
|
172
282
|
// Case 2: object is member expression with a type reference → check if property is a member
|
|
@@ -179,16 +289,10 @@ const resolveHierarchicalBinding = (object, propertyName) => {
|
|
|
179
289
|
const type = namespace.types.find((t) => t.alias === object.property);
|
|
180
290
|
if (type) {
|
|
181
291
|
// The object is a type reference (namespace.type), now check if property is a member
|
|
182
|
-
const
|
|
183
|
-
if (
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
assembly: member.binding.assembly,
|
|
187
|
-
type: member.binding.type,
|
|
188
|
-
member: member.binding.member,
|
|
189
|
-
parameterModifiers: member.parameterModifiers,
|
|
190
|
-
};
|
|
191
|
-
}
|
|
292
|
+
const overloads = registry.getMemberOverloads(type.alias, propertyName);
|
|
293
|
+
if (!overloads || overloads.length === 0)
|
|
294
|
+
return undefined;
|
|
295
|
+
return toIrMemberBinding(overloads);
|
|
192
296
|
}
|
|
193
297
|
}
|
|
194
298
|
}
|
|
@@ -198,55 +302,297 @@ const resolveHierarchicalBinding = (object, propertyName) => {
|
|
|
198
302
|
const objectTypeName = extractTypeName(object.inferredType);
|
|
199
303
|
if (objectTypeName) {
|
|
200
304
|
// Look up member by type alias and property name
|
|
201
|
-
const
|
|
202
|
-
if (
|
|
203
|
-
return
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
305
|
+
const overloads = registry.getMemberOverloads(objectTypeName, propertyName);
|
|
306
|
+
if (!overloads || overloads.length === 0)
|
|
307
|
+
return undefined;
|
|
308
|
+
return toIrMemberBinding(overloads);
|
|
309
|
+
}
|
|
310
|
+
return undefined;
|
|
311
|
+
};
|
|
312
|
+
const findNearestBindingsJson = (filePath) => {
|
|
313
|
+
let currentDir = dirname(filePath);
|
|
314
|
+
while (true) {
|
|
315
|
+
const candidate = join(currentDir, "bindings.json");
|
|
316
|
+
if (existsSync(candidate))
|
|
317
|
+
return candidate;
|
|
318
|
+
const parentDir = dirname(currentDir);
|
|
319
|
+
if (parentDir === currentDir)
|
|
320
|
+
return undefined;
|
|
321
|
+
currentDir = parentDir;
|
|
322
|
+
}
|
|
323
|
+
};
|
|
324
|
+
const disambiguateOverloadsByDeclaringType = (overloads, memberId, declaringTypeTsName, ctx) => {
|
|
325
|
+
const declSourceFilePath = ctx.binding.getSourceFilePathOfMember(memberId);
|
|
326
|
+
if (!declSourceFilePath)
|
|
327
|
+
return undefined;
|
|
328
|
+
const bindingsPath = findNearestBindingsJson(declSourceFilePath);
|
|
329
|
+
if (!bindingsPath)
|
|
330
|
+
return undefined;
|
|
331
|
+
const raw = (() => {
|
|
332
|
+
try {
|
|
333
|
+
return JSON.parse(readFileSync(bindingsPath, "utf8"));
|
|
209
334
|
}
|
|
335
|
+
catch {
|
|
336
|
+
return undefined;
|
|
337
|
+
}
|
|
338
|
+
})();
|
|
339
|
+
if (!raw || typeof raw !== "object")
|
|
340
|
+
return undefined;
|
|
341
|
+
const types = raw.types;
|
|
342
|
+
if (!Array.isArray(types))
|
|
343
|
+
return undefined;
|
|
344
|
+
const typeEntry = types.find((t) => {
|
|
345
|
+
if (!t || typeof t !== "object")
|
|
346
|
+
return false;
|
|
347
|
+
const tsEmitName = t.tsEmitName;
|
|
348
|
+
return tsEmitName === declaringTypeTsName;
|
|
349
|
+
});
|
|
350
|
+
const expectedClrType = typeEntry && typeof typeEntry.clrName === "string" ? typeEntry.clrName : undefined;
|
|
351
|
+
if (!expectedClrType)
|
|
352
|
+
return undefined;
|
|
353
|
+
const filtered = overloads.filter((m) => m.binding.type === expectedClrType);
|
|
354
|
+
return filtered.length > 0 ? filtered : undefined;
|
|
355
|
+
};
|
|
356
|
+
/**
|
|
357
|
+
* Resolve hierarchical binding for a member access using Binding-resolved MemberId.
|
|
358
|
+
*
|
|
359
|
+
* This is a fallback for cases where the receiver's inferredType is unavailable
|
|
360
|
+
* (e.g., local variable typing inferred from a complex initializer), but TS can
|
|
361
|
+
* still resolve the member symbol deterministically.
|
|
362
|
+
*
|
|
363
|
+
* Critical use case: CLR property casing (e.g., `.expression` → `.Expression`).
|
|
364
|
+
*/
|
|
365
|
+
const resolveHierarchicalBindingFromMemberId = (node, propertyName, ctx) => {
|
|
366
|
+
const memberId = ctx.binding.resolvePropertyAccess(node);
|
|
367
|
+
if (!memberId)
|
|
368
|
+
return undefined;
|
|
369
|
+
const declaringTypeName = ctx.binding.getDeclaringTypeNameOfMember(memberId);
|
|
370
|
+
if (!declaringTypeName)
|
|
371
|
+
return undefined;
|
|
372
|
+
const normalizeDeclaringType = (name) => {
|
|
373
|
+
if (name.endsWith("$instance"))
|
|
374
|
+
return name.slice(0, -"$instance".length);
|
|
375
|
+
if (name.startsWith("__") && name.endsWith("$views")) {
|
|
376
|
+
return name.slice("__".length, -"$views".length);
|
|
377
|
+
}
|
|
378
|
+
return name;
|
|
379
|
+
};
|
|
380
|
+
const typeAlias = normalizeDeclaringType(declaringTypeName);
|
|
381
|
+
const overloadsAll = ctx.bindings.getMemberOverloads(typeAlias, propertyName);
|
|
382
|
+
if (!overloadsAll || overloadsAll.length === 0) {
|
|
383
|
+
const declSourceFilePath = ctx.binding.getSourceFilePathOfMember(memberId);
|
|
384
|
+
const bindingsPath = declSourceFilePath !== undefined
|
|
385
|
+
? findNearestBindingsJson(declSourceFilePath)
|
|
386
|
+
: undefined;
|
|
387
|
+
// Airplane-grade rule: If this member resolves to a tsbindgen declaration,
|
|
388
|
+
// we MUST have a CLR binding; we must never guess member names via naming policy.
|
|
389
|
+
//
|
|
390
|
+
// We treat it as CLR-bound if:
|
|
391
|
+
// - The declaring type is a tsbindgen extension interface (`__Ext_*`), OR
|
|
392
|
+
// - We can locate a bindings.json near the declaration source file.
|
|
393
|
+
const isClrBound = declaringTypeName.startsWith("__Ext_") || bindingsPath !== undefined;
|
|
394
|
+
if (isClrBound) {
|
|
395
|
+
ctx.diagnostics.push(createDiagnostic("TSN4004", "error", `Missing CLR binding for '${typeAlias}.${propertyName}'.`, getSourceSpan(node), bindingsPath
|
|
396
|
+
? `No matching member binding was found in the loaded bindings for this tsbindgen declaration. (bindings.json: ${bindingsPath})`
|
|
397
|
+
: "No matching member binding was found for this tsbindgen extension interface member."));
|
|
398
|
+
}
|
|
399
|
+
return undefined;
|
|
400
|
+
}
|
|
401
|
+
let overloads = overloadsAll;
|
|
402
|
+
const targetKeys = new Set(overloads.map((m) => `${m.binding.assembly}:${m.binding.type}::${m.binding.member}`));
|
|
403
|
+
if (targetKeys.size > 1) {
|
|
404
|
+
const disambiguated = disambiguateOverloadsByDeclaringType(overloads, memberId, typeAlias, ctx);
|
|
405
|
+
if (disambiguated) {
|
|
406
|
+
overloads = disambiguated;
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
const first = overloads[0];
|
|
410
|
+
if (!first)
|
|
411
|
+
return undefined;
|
|
412
|
+
const targetKey = `${first.binding.assembly}:${first.binding.type}::${first.binding.member}`;
|
|
413
|
+
if (overloads.some((m) => `${m.binding.assembly}:${m.binding.type}::${m.binding.member}` !== targetKey)) {
|
|
414
|
+
const declSourceFilePath = ctx.binding.getSourceFilePathOfMember(memberId);
|
|
415
|
+
const bindingsPath = declSourceFilePath !== undefined
|
|
416
|
+
? findNearestBindingsJson(declSourceFilePath)
|
|
417
|
+
: undefined;
|
|
418
|
+
// Only treat this as a CLR ambiguity when we can locate a bindings.json near the
|
|
419
|
+
// TS declaration source (tsbindgen packages). Otherwise, fall back to "no binding"
|
|
420
|
+
// and let local codepaths handle naming policy.
|
|
421
|
+
if (bindingsPath) {
|
|
422
|
+
const targets = [...new Set(overloads.map((m) => `${m.binding.type}.${m.binding.member}`))]
|
|
423
|
+
.sort()
|
|
424
|
+
.join(", ");
|
|
425
|
+
ctx.diagnostics.push(createDiagnostic("TSN4003", "error", `Ambiguous CLR binding for '${typeAlias}.${propertyName}'. Multiple CLR targets found: ${targets}.`, getSourceSpan(node), `This usually indicates multiple tsbindgen packages export the same TS type/member alias. Ensure the correct package is imported, or regenerate bindings to avoid collisions. (bindings.json: ${bindingsPath})`));
|
|
426
|
+
}
|
|
427
|
+
return undefined;
|
|
428
|
+
}
|
|
429
|
+
const getModifiersKey = (m) => {
|
|
430
|
+
const mods = m.parameterModifiers ?? [];
|
|
431
|
+
if (mods.length === 0)
|
|
432
|
+
return "";
|
|
433
|
+
return [...mods]
|
|
434
|
+
.slice()
|
|
435
|
+
.sort((a, b) => a.index - b.index)
|
|
436
|
+
.map((mod) => `${mod.index}:${mod.modifier}`)
|
|
437
|
+
.join(",");
|
|
438
|
+
};
|
|
439
|
+
const modsKey = getModifiersKey(first);
|
|
440
|
+
const modsConsistent = overloads.every((m) => getModifiersKey(m) === modsKey);
|
|
441
|
+
return {
|
|
442
|
+
assembly: first.binding.assembly,
|
|
443
|
+
type: first.binding.type,
|
|
444
|
+
member: first.binding.member,
|
|
445
|
+
parameterModifiers: modsConsistent && first.parameterModifiers && first.parameterModifiers.length > 0
|
|
446
|
+
? first.parameterModifiers
|
|
447
|
+
: undefined,
|
|
448
|
+
isExtensionMethod: first.isExtensionMethod,
|
|
449
|
+
};
|
|
450
|
+
};
|
|
451
|
+
/**
|
|
452
|
+
* Resolve instance-style extension method bindings from tsbindgen's `ExtensionMethods` typing.
|
|
453
|
+
*
|
|
454
|
+
* tsbindgen emits extension methods as interface members on `__Ext_*` types, and users
|
|
455
|
+
* opt in via `ExtensionMethods<TShape>`. At runtime those members do not exist, so we
|
|
456
|
+
* must attach the underlying CLR binding so the emitter can lower the call to an
|
|
457
|
+
* explicit static invocation.
|
|
458
|
+
*/
|
|
459
|
+
const resolveExtensionMethodsBinding = (node, propertyName, ctx) => {
|
|
460
|
+
const memberId = ctx.binding.resolvePropertyAccess(node);
|
|
461
|
+
if (!memberId)
|
|
462
|
+
return undefined;
|
|
463
|
+
const declaringTypeName = ctx.binding.getDeclaringTypeNameOfMember(memberId);
|
|
464
|
+
if (!declaringTypeName || !declaringTypeName.startsWith("__Ext_")) {
|
|
465
|
+
return undefined;
|
|
466
|
+
}
|
|
467
|
+
const callArgumentCount = (() => {
|
|
468
|
+
const parent = node.parent;
|
|
469
|
+
if (ts.isCallExpression(parent) && parent.expression === node) {
|
|
470
|
+
return parent.arguments.length;
|
|
471
|
+
}
|
|
472
|
+
return undefined;
|
|
473
|
+
})();
|
|
474
|
+
const resolved = ctx.bindings.resolveExtensionMethod(declaringTypeName, propertyName, callArgumentCount);
|
|
475
|
+
if (!resolved)
|
|
476
|
+
return undefined;
|
|
477
|
+
// tsbindgen parameterModifiers indices include the extension receiver at index 0.
|
|
478
|
+
// For instance-style calls, our call-site arguments exclude the receiver, so shift by -1.
|
|
479
|
+
const shiftedModifiers = resolved.parameterModifiers
|
|
480
|
+
? resolved.parameterModifiers
|
|
481
|
+
.map((m) => ({ index: m.index - 1, modifier: m.modifier }))
|
|
482
|
+
.filter((m) => m.index >= 0)
|
|
483
|
+
: undefined;
|
|
484
|
+
return {
|
|
485
|
+
assembly: resolved.binding.assembly,
|
|
486
|
+
type: resolved.binding.type,
|
|
487
|
+
member: resolved.binding.member,
|
|
488
|
+
parameterModifiers: shiftedModifiers && shiftedModifiers.length > 0
|
|
489
|
+
? shiftedModifiers
|
|
490
|
+
: undefined,
|
|
491
|
+
isExtensionMethod: resolved.isExtensionMethod,
|
|
492
|
+
};
|
|
493
|
+
};
|
|
494
|
+
/**
|
|
495
|
+
* Derive element type from object type for element access.
|
|
496
|
+
* - Array type → element type
|
|
497
|
+
* - Dictionary type → value type
|
|
498
|
+
* - String → string (single character)
|
|
499
|
+
* - Other → undefined
|
|
500
|
+
*/
|
|
501
|
+
const deriveElementType = (objectType) => {
|
|
502
|
+
if (!objectType)
|
|
503
|
+
return undefined;
|
|
504
|
+
if (objectType.kind === "arrayType") {
|
|
505
|
+
return objectType.elementType;
|
|
506
|
+
}
|
|
507
|
+
if (objectType.kind === "dictionaryType") {
|
|
508
|
+
return objectType.valueType;
|
|
509
|
+
}
|
|
510
|
+
if (objectType.kind === "primitiveType" && objectType.name === "string") {
|
|
511
|
+
// string[n] returns a single character (string in TS, char in C#)
|
|
512
|
+
return { kind: "primitiveType", name: "string" };
|
|
513
|
+
}
|
|
514
|
+
if (objectType.kind === "referenceType" &&
|
|
515
|
+
objectType.name === "Span" &&
|
|
516
|
+
objectType.typeArguments &&
|
|
517
|
+
objectType.typeArguments.length === 1) {
|
|
518
|
+
return objectType.typeArguments[0];
|
|
210
519
|
}
|
|
211
520
|
return undefined;
|
|
212
521
|
};
|
|
213
522
|
/**
|
|
214
523
|
* Convert property access or element access expression
|
|
215
524
|
*/
|
|
216
|
-
export const convertMemberExpression = (node,
|
|
525
|
+
export const convertMemberExpression = (node, ctx) => {
|
|
217
526
|
const isOptional = node.questionDotToken !== undefined;
|
|
218
|
-
const inferredType = getInferredType(node, checker);
|
|
219
527
|
const sourceSpan = getSourceSpan(node);
|
|
220
528
|
if (ts.isPropertyAccessExpression(node)) {
|
|
221
|
-
const object = convertExpression(node.expression,
|
|
529
|
+
const object = convertExpression(node.expression, ctx, undefined);
|
|
222
530
|
const propertyName = node.name.text;
|
|
223
531
|
// Try to resolve hierarchical binding
|
|
224
|
-
const memberBinding = resolveHierarchicalBinding(object, propertyName)
|
|
532
|
+
const memberBinding = resolveHierarchicalBinding(object, propertyName, ctx) ??
|
|
533
|
+
resolveExtensionMethodsBinding(node, propertyName, ctx) ??
|
|
534
|
+
resolveHierarchicalBindingFromMemberId(node, propertyName, ctx);
|
|
535
|
+
// DETERMINISTIC TYPING: Property type comes from NominalEnv + TypeRegistry for
|
|
536
|
+
// user-defined types (including inherited members), with fallback to Binding layer
|
|
537
|
+
// for built-ins and CLR types.
|
|
538
|
+
//
|
|
539
|
+
// The receiver's inferredType enables NominalEnv to walk inheritance chains
|
|
540
|
+
// and substitute type parameters correctly for inherited generic members.
|
|
541
|
+
//
|
|
542
|
+
// Built-ins like string.length work because globals declare them with proper types.
|
|
543
|
+
// If getDeclaredPropertyType returns undefined, it means the property declaration
|
|
544
|
+
// is missing - use unknownType as poison so validation can emit TSN5203.
|
|
545
|
+
//
|
|
546
|
+
// EXCEPTION: If memberBinding exists AND declaredType is undefined, return undefined.
|
|
547
|
+
// This handles pure CLR-bound methods like Console.WriteLine that have no TS declaration.
|
|
548
|
+
const declaredType = getDeclaredPropertyType(node, object.inferredType, ctx);
|
|
549
|
+
// DETERMINISTIC TYPING: Set inferredType for validation passes (like numeric proof).
|
|
550
|
+
// The emitter uses memberBinding separately for C# casing (e.g., length -> Length).
|
|
551
|
+
//
|
|
552
|
+
// Priority order for inferredType:
|
|
553
|
+
// 1. If declaredType exists, use it (covers built-ins like string.length -> int)
|
|
554
|
+
// 2. If memberBinding exists but no declaredType, use undefined (pure CLR-bound)
|
|
555
|
+
// 3. Otherwise, poison with unknownType for validation (TSN5203)
|
|
556
|
+
//
|
|
557
|
+
// Note: Both memberBinding AND inferredType can be set - they serve different purposes:
|
|
558
|
+
// - memberBinding: used by emitter for C# member names
|
|
559
|
+
// - inferredType: used by validation passes for type checking
|
|
560
|
+
//
|
|
561
|
+
// Class fields without explicit type annotations will emit TSN5203.
|
|
562
|
+
// Users must add explicit types like `count: int = 0` instead of `count = 0`.
|
|
563
|
+
const propertyInferredType = declaredType
|
|
564
|
+
? declaredType
|
|
565
|
+
: memberBinding
|
|
566
|
+
? undefined
|
|
567
|
+
: { kind: "unknownType" };
|
|
225
568
|
return {
|
|
226
569
|
kind: "memberAccess",
|
|
227
570
|
object,
|
|
228
571
|
property: propertyName,
|
|
229
572
|
isComputed: false,
|
|
230
573
|
isOptional,
|
|
231
|
-
inferredType,
|
|
574
|
+
inferredType: propertyInferredType,
|
|
232
575
|
sourceSpan,
|
|
233
576
|
memberBinding,
|
|
234
577
|
};
|
|
235
578
|
}
|
|
236
579
|
else {
|
|
237
580
|
// Element access (computed): obj[expr]
|
|
238
|
-
const object = convertExpression(node.expression,
|
|
239
|
-
|
|
581
|
+
const object = convertExpression(node.expression, ctx, undefined);
|
|
582
|
+
// DETERMINISTIC TYPING: Use object's inferredType (not getInferredType)
|
|
583
|
+
const objectType = object.inferredType;
|
|
240
584
|
// Classify the access kind for proof pass
|
|
241
585
|
// This determines whether Int32 proof is required for the index
|
|
242
586
|
const accessKind = classifyComputedAccess(objectType);
|
|
587
|
+
// Derive element type from object type
|
|
588
|
+
const elementType = deriveElementType(objectType);
|
|
243
589
|
return {
|
|
244
590
|
kind: "memberAccess",
|
|
245
591
|
object,
|
|
246
|
-
property: convertExpression(node.argumentExpression,
|
|
592
|
+
property: convertExpression(node.argumentExpression, ctx, undefined),
|
|
247
593
|
isComputed: true,
|
|
248
594
|
isOptional,
|
|
249
|
-
inferredType,
|
|
595
|
+
inferredType: elementType,
|
|
250
596
|
sourceSpan,
|
|
251
597
|
accessKind,
|
|
252
598
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"access.js","sourceRoot":"","sources":["../../../../src/ir/converters/expressions/access.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"access.js","sourceRoot":"","sources":["../../../../src/ir/converters/expressions/access.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,35 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Call and new expression converters
|
|
3
|
+
*
|
|
4
|
+
* ALICE'S SPEC: All call resolution goes through TypeSystem.resolveCall().
|
|
5
|
+
* NO FALLBACKS ALLOWED. If TypeSystem can't resolve, return unknownType.
|
|
3
6
|
*/
|
|
4
7
|
import * as ts from "typescript";
|
|
5
|
-
import { IrCallExpression, IrNewExpression, IrTryCastExpression } from "../../types.js";
|
|
8
|
+
import { IrCallExpression, IrNewExpression, IrTryCastExpression, IrStackAllocExpression } from "../../types.js";
|
|
9
|
+
import { IrType } from "../../types.js";
|
|
10
|
+
import type { ProgramContext } from "../../program-context.js";
|
|
11
|
+
/**
|
|
12
|
+
* Get the declared return type from a call or new expression's signature.
|
|
13
|
+
*
|
|
14
|
+
* ALICE'S SPEC: Uses TypeSystem.resolveCall() EXCLUSIVELY.
|
|
15
|
+
* NO FALLBACKS. If TypeSystem can't resolve, return unknownType.
|
|
16
|
+
* This ensures any missing TypeSystem functionality surfaces as test failures.
|
|
17
|
+
*/
|
|
18
|
+
export declare const getDeclaredReturnType: (node: ts.CallExpression | ts.NewExpression, ctx: ProgramContext, receiverIrType?: IrType) => IrType | undefined;
|
|
6
19
|
/**
|
|
7
20
|
* Convert call expression
|
|
8
21
|
*/
|
|
9
|
-
export declare const convertCallExpression: (node: ts.CallExpression,
|
|
22
|
+
export declare const convertCallExpression: (node: ts.CallExpression, ctx: ProgramContext) => IrCallExpression | IrTryCastExpression | IrStackAllocExpression;
|
|
10
23
|
/**
|
|
11
24
|
* Convert new expression
|
|
25
|
+
*
|
|
26
|
+
* Phase 15 (Alice's spec): Two-pass resolution for deterministic constructor typing.
|
|
27
|
+
* 1) Resolve once (without argTypes) to get parameter types for expected-type threading.
|
|
28
|
+
* 2) Convert non-lambda arguments first, collecting argTypes for inference.
|
|
29
|
+
* 3) Re-resolve with argTypes to infer constructor type parameters.
|
|
30
|
+
* 4) Convert lambda arguments using instantiated parameter types.
|
|
31
|
+
* 5) Final resolve with full argTypes.
|
|
32
|
+
* 6) inferredType MUST be finalResolved.returnType.
|
|
12
33
|
*/
|
|
13
|
-
export declare const convertNewExpression: (node: ts.NewExpression,
|
|
34
|
+
export declare const convertNewExpression: (node: ts.NewExpression, ctx: ProgramContext) => IrNewExpression;
|
|
14
35
|
//# sourceMappingURL=calls.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calls.d.ts","sourceRoot":"","sources":["../../../../src/ir/converters/expressions/calls.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"calls.d.ts","sourceRoot":"","sources":["../../../../src/ir/converters/expressions/calls.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,sBAAsB,EACvB,MAAM,gBAAgB,CAAC;AAOxB,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAyF/D;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,GAChC,MAAM,EAAE,CAAC,cAAc,GAAG,EAAE,CAAC,aAAa,EAC1C,KAAK,cAAc,EACnB,iBAAiB,MAAM,KACtB,MAAM,GAAG,SAqFX,CAAC;AAkOF;;GAEG;AACH,eAAO,MAAM,qBAAqB,GAChC,MAAM,EAAE,CAAC,cAAc,EACvB,KAAK,cAAc,KAClB,gBAAgB,GAAG,mBAAmB,GAAG,sBAkU3C,CAAC;AAIF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,oBAAoB,GAC/B,MAAM,EAAE,CAAC,aAAa,EACtB,KAAK,cAAc,KAClB,eAyJF,CAAC"}
|