@tsonic/frontend 0.0.61 → 0.0.63
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/dependency-graph.d.ts +1 -1
- package/dist/dependency-graph.d.ts.map +1 -1
- package/dist/dependency-graph.js +1 -1
- package/dist/dependency-graph.js.map +1 -1
- package/dist/dotnet-metadata.d.ts +0 -12
- package/dist/dotnet-metadata.d.ts.map +1 -1
- package/dist/dotnet-metadata.js +3 -25
- package/dist/dotnet-metadata.js.map +1 -1
- package/dist/dotnet-metadata.test.js.map +1 -1
- package/dist/generic-function-values.d.ts +11 -0
- package/dist/generic-function-values.d.ts.map +1 -0
- package/dist/generic-function-values.js +243 -0
- package/dist/generic-function-values.js.map +1 -0
- package/dist/generic-function-values.test.d.ts +2 -0
- package/dist/generic-function-values.test.d.ts.map +1 -0
- package/dist/generic-function-values.test.js +256 -0
- package/dist/generic-function-values.test.js.map +1 -0
- package/dist/graph/extraction/imports.d.ts +5 -0
- package/dist/graph/extraction/imports.d.ts.map +1 -1
- package/dist/graph/extraction/imports.js +30 -0
- package/dist/graph/extraction/imports.js.map +1 -1
- package/dist/graph/extraction/index.d.ts +1 -1
- package/dist/graph/extraction/index.d.ts.map +1 -1
- package/dist/graph/extraction/index.js +1 -1
- package/dist/graph/extraction/index.js.map +1 -1
- package/dist/graph/extraction/orchestrator.d.ts.map +1 -1
- package/dist/graph/extraction/orchestrator.js +16 -2
- package/dist/graph/extraction/orchestrator.js.map +1 -1
- package/dist/graph/extraction.d.ts +1 -1
- package/dist/graph/extraction.d.ts.map +1 -1
- package/dist/graph/extraction.js +1 -1
- package/dist/graph/extraction.js.map +1 -1
- package/dist/ir/binding/binding-factory.d.ts +17 -0
- package/dist/ir/binding/binding-factory.d.ts.map +1 -0
- package/dist/ir/binding/binding-factory.js +765 -0
- package/dist/ir/binding/binding-factory.js.map +1 -0
- package/dist/ir/binding/binding-helpers.d.ts +90 -0
- package/dist/ir/binding/binding-helpers.d.ts.map +1 -0
- package/dist/ir/binding/binding-helpers.js +387 -0
- package/dist/ir/binding/binding-helpers.js.map +1 -0
- package/dist/ir/binding/binding-types.d.ts +203 -0
- package/dist/ir/binding/binding-types.d.ts.map +1 -0
- package/dist/ir/binding/binding-types.js +9 -0
- package/dist/ir/binding/binding-types.js.map +1 -0
- package/dist/ir/binding/index.d.ts +4 -151
- package/dist/ir/binding/index.d.ts.map +1 -1
- package/dist/ir/binding/index.js +3 -1124
- package/dist/ir/binding/index.js.map +1 -1
- package/dist/ir/binding-resolution.test.js +4 -1
- package/dist/ir/binding-resolution.test.js.map +1 -1
- package/dist/ir/bindings-disambiguation.test.js.map +1 -1
- package/dist/ir/builder/imports.d.ts.map +1 -1
- package/dist/ir/builder/imports.js +91 -5
- package/dist/ir/builder/imports.js.map +1 -1
- package/dist/ir/builder.test.js +456 -24
- package/dist/ir/builder.test.js.map +1 -1
- package/dist/ir/converters/anonymous-synthesis.d.ts +3 -3
- package/dist/ir/converters/anonymous-synthesis.d.ts.map +1 -1
- package/dist/ir/converters/anonymous-synthesis.js +45 -8
- package/dist/ir/converters/anonymous-synthesis.js.map +1 -1
- package/dist/ir/converters/expressions/access/access-converter.d.ts +14 -0
- package/dist/ir/converters/expressions/access/access-converter.d.ts.map +1 -0
- package/dist/ir/converters/expressions/access/access-converter.js +141 -0
- package/dist/ir/converters/expressions/access/access-converter.js.map +1 -0
- package/dist/ir/converters/expressions/access/binding-resolution.d.ts +35 -0
- package/dist/ir/converters/expressions/access/binding-resolution.d.ts.map +1 -0
- package/dist/ir/converters/expressions/access/binding-resolution.js +384 -0
- package/dist/ir/converters/expressions/access/binding-resolution.js.map +1 -0
- package/dist/ir/converters/expressions/access/member-resolution.d.ts +67 -0
- package/dist/ir/converters/expressions/access/member-resolution.d.ts.map +1 -0
- package/dist/ir/converters/expressions/access/member-resolution.js +262 -0
- package/dist/ir/converters/expressions/access/member-resolution.js.map +1 -0
- package/dist/ir/converters/expressions/access.d.ts +1 -7
- package/dist/ir/converters/expressions/access.d.ts.map +1 -1
- package/dist/ir/converters/expressions/access.js +1 -720
- package/dist/ir/converters/expressions/access.js.map +1 -1
- package/dist/ir/converters/expressions/calls/call-converter.d.ts +23 -0
- package/dist/ir/converters/expressions/calls/call-converter.d.ts.map +1 -0
- package/dist/ir/converters/expressions/calls/call-converter.js +526 -0
- package/dist/ir/converters/expressions/calls/call-converter.js.map +1 -0
- package/dist/ir/converters/expressions/calls/call-site-analysis.d.ts +53 -0
- package/dist/ir/converters/expressions/calls/call-site-analysis.d.ts.map +1 -0
- package/dist/ir/converters/expressions/calls/call-site-analysis.js +554 -0
- package/dist/ir/converters/expressions/calls/call-site-analysis.js.map +1 -0
- package/dist/ir/converters/expressions/calls/new-converter.d.ts +21 -0
- package/dist/ir/converters/expressions/calls/new-converter.d.ts.map +1 -0
- package/dist/ir/converters/expressions/calls/new-converter.js +182 -0
- package/dist/ir/converters/expressions/calls/new-converter.js.map +1 -0
- package/dist/ir/converters/expressions/calls.d.ts +2 -28
- package/dist/ir/converters/expressions/calls.d.ts.map +1 -1
- package/dist/ir/converters/expressions/calls.js +2 -953
- package/dist/ir/converters/expressions/calls.js.map +1 -1
- package/dist/ir/converters/expressions/collections.d.ts.map +1 -1
- package/dist/ir/converters/expressions/collections.js +56 -28
- package/dist/ir/converters/expressions/collections.js.map +1 -1
- package/dist/ir/converters/expressions/functions.js +3 -3
- package/dist/ir/converters/expressions/functions.js.map +1 -1
- package/dist/ir/converters/expressions/helpers.d.ts.map +1 -1
- package/dist/ir/converters/expressions/helpers.js +1 -0
- package/dist/ir/converters/expressions/helpers.js.map +1 -1
- package/dist/ir/converters/expressions/operators.d.ts.map +1 -1
- package/dist/ir/converters/expressions/operators.js +1 -1
- package/dist/ir/converters/expressions/operators.js.map +1 -1
- package/dist/ir/converters/expressions/other.d.ts.map +1 -1
- package/dist/ir/converters/expressions/other.js +17 -2
- package/dist/ir/converters/expressions/other.js.map +1 -1
- package/dist/ir/converters/flow-narrowing.d.ts.map +1 -1
- package/dist/ir/converters/flow-narrowing.js +3 -2
- package/dist/ir/converters/flow-narrowing.js.map +1 -1
- package/dist/ir/converters/statements/control/loops.d.ts.map +1 -1
- package/dist/ir/converters/statements/control/loops.js +8 -2
- package/dist/ir/converters/statements/control/loops.js.map +1 -1
- package/dist/ir/converters/statements/declarations/classes/constructors.d.ts.map +1 -1
- package/dist/ir/converters/statements/declarations/classes/constructors.js.map +1 -1
- package/dist/ir/converters/statements/declarations/classes/methods.d.ts.map +1 -1
- package/dist/ir/converters/statements/declarations/classes/methods.js +71 -23
- package/dist/ir/converters/statements/declarations/classes/methods.js.map +1 -1
- package/dist/ir/converters/statements/declarations/classes/orchestrator.d.ts.map +1 -1
- package/dist/ir/converters/statements/declarations/classes/orchestrator.js +10 -4
- package/dist/ir/converters/statements/declarations/classes/orchestrator.js.map +1 -1
- package/dist/ir/converters/statements/declarations/classes/override-detection.d.ts.map +1 -1
- package/dist/ir/converters/statements/declarations/classes/override-detection.js +5 -1
- package/dist/ir/converters/statements/declarations/classes/override-detection.js.map +1 -1
- package/dist/ir/converters/statements/declarations/classes/properties.d.ts.map +1 -1
- package/dist/ir/converters/statements/declarations/classes/properties.js +2 -1
- package/dist/ir/converters/statements/declarations/classes/properties.js.map +1 -1
- package/dist/ir/converters/statements/declarations/type-aliases.js +1 -1
- package/dist/ir/converters/statements/declarations/type-aliases.js.map +1 -1
- package/dist/ir/converters/statements/declarations/variables.d.ts +2 -2
- package/dist/ir/converters/statements/declarations/variables.d.ts.map +1 -1
- package/dist/ir/converters/statements/declarations/variables.js +290 -3
- package/dist/ir/converters/statements/declarations/variables.js.map +1 -1
- package/dist/ir/converters/statements/helpers.d.ts.map +1 -1
- package/dist/ir/converters/statements/helpers.js +10 -2
- package/dist/ir/converters/statements/helpers.js.map +1 -1
- package/dist/ir/converters/type-env.d.ts.map +1 -1
- package/dist/ir/converters/type-env.js.map +1 -1
- package/dist/ir/expression-converter.d.ts +0 -1
- package/dist/ir/expression-converter.d.ts.map +1 -1
- package/dist/ir/expression-converter.js +25 -4
- package/dist/ir/expression-converter.js.map +1 -1
- package/dist/ir/field-marker.test.js.map +1 -1
- package/dist/ir/generic-function-value-lowering.test.d.ts +2 -0
- package/dist/ir/generic-function-value-lowering.test.d.ts.map +1 -0
- package/dist/ir/generic-function-value-lowering.test.js +312 -0
- package/dist/ir/generic-function-value-lowering.test.js.map +1 -0
- package/dist/ir/generic-validator.d.ts +3 -4
- package/dist/ir/generic-validator.d.ts.map +1 -1
- package/dist/ir/generic-validator.js +3 -35
- package/dist/ir/generic-validator.js.map +1 -1
- package/dist/ir/program-context.d.ts +7 -0
- package/dist/ir/program-context.d.ts.map +1 -1
- package/dist/ir/program-context.js +7 -2
- package/dist/ir/program-context.js.map +1 -1
- package/dist/ir/statement-converter.d.ts +0 -2
- package/dist/ir/statement-converter.d.ts.map +1 -1
- package/dist/ir/statement-converter.js +0 -3
- package/dist/ir/statement-converter.js.map +1 -1
- package/dist/ir/type-system/internal/handle-types.d.ts +16 -16
- package/dist/ir/type-system/internal/handle-types.d.ts.map +1 -1
- package/dist/ir/type-system/internal/nominal-env.d.ts +0 -2
- package/dist/ir/type-system/internal/nominal-env.d.ts.map +1 -1
- package/dist/ir/type-system/internal/nominal-env.js +2 -6
- package/dist/ir/type-system/internal/nominal-env.js.map +1 -1
- package/dist/ir/type-system/internal/type-converter/converter.d.ts +3 -1
- package/dist/ir/type-system/internal/type-converter/converter.d.ts.map +1 -1
- package/dist/ir/type-system/internal/type-converter/converter.js +3 -1
- package/dist/ir/type-system/internal/type-converter/converter.js.map +1 -1
- package/dist/ir/type-system/internal/type-converter/objects.js +7 -1
- package/dist/ir/type-system/internal/type-converter/objects.js.map +1 -1
- package/dist/ir/type-system/internal/type-converter/orchestrator.d.ts +0 -2
- package/dist/ir/type-system/internal/type-converter/orchestrator.d.ts.map +1 -1
- package/dist/ir/type-system/internal/type-converter/orchestrator.js +318 -24
- package/dist/ir/type-system/internal/type-converter/orchestrator.js.map +1 -1
- package/dist/ir/type-system/internal/type-converter/orchestrator.test.d.ts +2 -0
- package/dist/ir/type-system/internal/type-converter/orchestrator.test.d.ts.map +1 -0
- package/dist/ir/type-system/internal/type-converter/orchestrator.test.js +265 -0
- package/dist/ir/type-system/internal/type-converter/orchestrator.test.js.map +1 -0
- package/dist/ir/type-system/internal/type-converter/primitives.d.ts.map +1 -1
- package/dist/ir/type-system/internal/type-converter/primitives.js +5 -0
- package/dist/ir/type-system/internal/type-converter/primitives.js.map +1 -1
- package/dist/ir/type-system/internal/type-converter/references.d.ts.map +1 -1
- package/dist/ir/type-system/internal/type-converter/references.js +172 -26
- package/dist/ir/type-system/internal/type-converter/references.js.map +1 -1
- package/dist/ir/type-system/internal/type-converter/utility-types.d.ts.map +1 -1
- package/dist/ir/type-system/internal/type-converter/utility-types.js +154 -4
- package/dist/ir/type-system/internal/type-converter/utility-types.js.map +1 -1
- package/dist/ir/type-system/internal/type-converter/utility-types.test.js +91 -1
- package/dist/ir/type-system/internal/type-converter/utility-types.test.js.map +1 -1
- package/dist/ir/type-system/internal/type-registry.d.ts +1 -1
- package/dist/ir/type-system/internal/type-registry.d.ts.map +1 -1
- package/dist/ir/type-system/internal/type-registry.js +15 -11
- package/dist/ir/type-system/internal/type-registry.js.map +1 -1
- package/dist/ir/type-system/internal/universe/alias-table.d.ts +0 -14
- package/dist/ir/type-system/internal/universe/alias-table.d.ts.map +1 -1
- package/dist/ir/type-system/internal/universe/alias-table.js +0 -17
- package/dist/ir/type-system/internal/universe/alias-table.js.map +1 -1
- package/dist/ir/type-system/internal/universe/clr-catalog.d.ts +3 -0
- package/dist/ir/type-system/internal/universe/clr-catalog.d.ts.map +1 -1
- package/dist/ir/type-system/internal/universe/clr-catalog.js +4 -1027
- package/dist/ir/type-system/internal/universe/clr-catalog.js.map +1 -1
- package/dist/ir/type-system/internal/universe/clr-entry-converter.d.ts +51 -0
- package/dist/ir/type-system/internal/universe/clr-entry-converter.d.ts.map +1 -0
- package/dist/ir/type-system/internal/universe/clr-entry-converter.js +657 -0
- package/dist/ir/type-system/internal/universe/clr-entry-converter.js.map +1 -0
- package/dist/ir/type-system/internal/universe/clr-type-parser.d.ts +52 -0
- package/dist/ir/type-system/internal/universe/clr-type-parser.d.ts.map +1 -0
- package/dist/ir/type-system/internal/universe/clr-type-parser.js +415 -0
- package/dist/ir/type-system/internal/universe/clr-type-parser.js.map +1 -0
- package/dist/ir/type-system/internal/universe/index.d.ts +1 -1
- package/dist/ir/type-system/internal/universe/index.d.ts.map +1 -1
- package/dist/ir/type-system/internal/universe/index.js +1 -3
- package/dist/ir/type-system/internal/universe/index.js.map +1 -1
- package/dist/ir/type-system/internal/universe/source-catalog.js +3 -1
- package/dist/ir/type-system/internal/universe/source-catalog.js.map +1 -1
- package/dist/ir/type-system/internal/universe/types.d.ts +7 -0
- package/dist/ir/type-system/internal/universe/types.d.ts.map +1 -1
- package/dist/ir/type-system/internal/universe/types.js.map +1 -1
- package/dist/ir/type-system/internal/universe/unified-universe.d.ts.map +1 -1
- package/dist/ir/type-system/internal/universe/unified-universe.js +16 -1
- package/dist/ir/type-system/internal/universe/unified-universe.js.map +1 -1
- package/dist/ir/type-system/internal/universe/unified-universe.test.d.ts +2 -0
- package/dist/ir/type-system/internal/universe/unified-universe.test.d.ts.map +1 -0
- package/dist/ir/type-system/internal/universe/unified-universe.test.js +89 -0
- package/dist/ir/type-system/internal/universe/unified-universe.test.js.map +1 -0
- package/dist/ir/type-system/type-system-call-resolution.d.ts +69 -0
- package/dist/ir/type-system/type-system-call-resolution.d.ts.map +1 -0
- package/dist/ir/type-system/type-system-call-resolution.js +1121 -0
- package/dist/ir/type-system/type-system-call-resolution.js.map +1 -0
- package/dist/ir/type-system/type-system-inference.d.ts +98 -0
- package/dist/ir/type-system/type-system-inference.d.ts.map +1 -0
- package/dist/ir/type-system/type-system-inference.js +1083 -0
- package/dist/ir/type-system/type-system-inference.js.map +1 -0
- package/dist/ir/type-system/type-system-relations.d.ts +15 -0
- package/dist/ir/type-system/type-system-relations.d.ts.map +1 -0
- package/dist/ir/type-system/type-system-relations.js +152 -0
- package/dist/ir/type-system/type-system-relations.js.map +1 -0
- package/dist/ir/type-system/type-system-state.d.ts +436 -0
- package/dist/ir/type-system/type-system-state.d.ts.map +1 -0
- package/dist/ir/type-system/type-system-state.js +212 -0
- package/dist/ir/type-system/type-system-state.js.map +1 -0
- package/dist/ir/type-system/type-system-utilities.d.ts +56 -0
- package/dist/ir/type-system/type-system-utilities.d.ts.map +1 -0
- package/dist/ir/type-system/type-system-utilities.js +373 -0
- package/dist/ir/type-system/type-system-utilities.js.map +1 -0
- package/dist/ir/type-system/type-system.d.ts +17 -350
- package/dist/ir/type-system/type-system.d.ts.map +1 -1
- package/dist/ir/type-system/type-system.js +67 -2764
- package/dist/ir/type-system/type-system.js.map +1 -1
- package/dist/ir/types/index.d.ts +1 -0
- 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.js +1 -1
- package/dist/ir/types/ir-substitution.js.map +1 -1
- package/dist/ir/types/ir-types.d.ts.map +1 -1
- package/dist/ir/types/module.d.ts +11 -0
- package/dist/ir/types/module.d.ts.map +1 -1
- package/dist/ir/types/statements.d.ts +1 -1
- package/dist/ir/types/type-ops.d.ts +9 -0
- package/dist/ir/types/type-ops.d.ts.map +1 -0
- package/dist/ir/types/type-ops.js +134 -0
- package/dist/ir/types/type-ops.js.map +1 -0
- package/dist/ir/types/type-ops.test.d.ts +2 -0
- package/dist/ir/types/type-ops.test.d.ts.map +1 -0
- package/dist/ir/types/type-ops.test.js +73 -0
- package/dist/ir/types/type-ops.test.js.map +1 -0
- package/dist/ir/validation/anonymous-type-lowering-pass.d.ts.map +1 -1
- package/dist/ir/validation/anonymous-type-lowering-pass.js +101 -49
- package/dist/ir/validation/anonymous-type-lowering-pass.js.map +1 -1
- package/dist/ir/validation/arrow-return-finalization-pass.js +13 -3
- package/dist/ir/validation/arrow-return-finalization-pass.js.map +1 -1
- package/dist/ir/validation/attribute-collection/arg-extractor.d.ts +58 -0
- package/dist/ir/validation/attribute-collection/arg-extractor.d.ts.map +1 -0
- package/dist/ir/validation/attribute-collection/arg-extractor.js +284 -0
- package/dist/ir/validation/attribute-collection/arg-extractor.js.map +1 -0
- package/dist/ir/validation/attribute-collection/marker-parser.d.ts +28 -0
- package/dist/ir/validation/attribute-collection/marker-parser.d.ts.map +1 -0
- package/dist/ir/validation/attribute-collection/marker-parser.js +404 -0
- package/dist/ir/validation/attribute-collection/marker-parser.js.map +1 -0
- package/dist/ir/validation/attribute-collection/orchestrator.d.ts +28 -0
- package/dist/ir/validation/attribute-collection/orchestrator.d.ts.map +1 -0
- package/dist/ir/validation/attribute-collection/orchestrator.js +332 -0
- package/dist/ir/validation/attribute-collection/orchestrator.js.map +1 -0
- package/dist/ir/validation/attribute-collection-pass.d.ts +1 -23
- package/dist/ir/validation/attribute-collection-pass.d.ts.map +1 -1
- package/dist/ir/validation/attribute-collection-pass.js +1 -953
- package/dist/ir/validation/attribute-collection-pass.js.map +1 -1
- package/dist/ir/validation/attribute-collection-pass.test.js +42 -19
- package/dist/ir/validation/attribute-collection-pass.test.js.map +1 -1
- package/dist/ir/validation/char-validation-pass.d.ts.map +1 -1
- package/dist/ir/validation/char-validation-pass.js +6 -3
- package/dist/ir/validation/char-validation-pass.js.map +1 -1
- package/dist/ir/validation/numeric-coercion-pass.d.ts.map +1 -1
- package/dist/ir/validation/numeric-coercion-pass.js.map +1 -1
- package/dist/ir/validation/numeric-invariants.test.js +46 -0
- 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 +68 -1
- package/dist/ir/validation/numeric-proof-pass.js.map +1 -1
- package/dist/ir/validation/rest-type-synthesis-pass.js +1 -1
- package/dist/ir/validation/rest-type-synthesis-pass.js.map +1 -1
- package/dist/ir/validation/soundness-gate.d.ts.map +1 -1
- package/dist/ir/validation/soundness-gate.js +8 -5
- package/dist/ir/validation/soundness-gate.js.map +1 -1
- package/dist/ir/validation/soundness-gate.test.js +158 -0
- package/dist/ir/validation/soundness-gate.test.js.map +1 -1
- package/dist/ir/validation/yield-lowering-pass.d.ts +11 -5
- package/dist/ir/validation/yield-lowering-pass.d.ts.map +1 -1
- package/dist/ir/validation/yield-lowering-pass.js +942 -48
- package/dist/ir/validation/yield-lowering-pass.js.map +1 -1
- package/dist/ir/validation/yield-lowering-pass.test.js +1333 -127
- package/dist/ir/validation/yield-lowering-pass.test.js.map +1 -1
- package/dist/program/binding-loader.d.ts +37 -0
- package/dist/program/binding-loader.d.ts.map +1 -0
- package/dist/program/binding-loader.js +155 -0
- package/dist/program/binding-loader.js.map +1 -0
- package/dist/program/binding-registry.d.ts +106 -0
- package/dist/program/binding-registry.d.ts.map +1 -0
- package/dist/program/binding-registry.js +590 -0
- package/dist/program/binding-registry.js.map +1 -0
- package/dist/program/binding-types.d.ts +166 -0
- package/dist/program/binding-types.d.ts.map +1 -0
- package/dist/program/binding-types.js +57 -0
- package/dist/program/binding-types.js.map +1 -0
- package/dist/program/bindings.d.ts +6 -271
- package/dist/program/bindings.d.ts.map +1 -1
- package/dist/program/bindings.js +7 -781
- package/dist/program/bindings.js.map +1 -1
- package/dist/program/clr-bindings-discovery.d.ts +19 -0
- package/dist/program/clr-bindings-discovery.d.ts.map +1 -0
- package/dist/program/clr-bindings-discovery.js +150 -0
- package/dist/program/clr-bindings-discovery.js.map +1 -0
- package/dist/program/clr-bindings-discovery.test.d.ts +2 -0
- package/dist/program/clr-bindings-discovery.test.d.ts.map +1 -0
- package/dist/program/clr-bindings-discovery.test.js +119 -0
- package/dist/program/clr-bindings-discovery.test.js.map +1 -0
- package/dist/program/creation.d.ts.map +1 -1
- package/dist/program/creation.js +2 -1
- package/dist/program/creation.js.map +1 -1
- package/dist/program/creation.test.js.map +1 -1
- package/dist/program/dependency-graph.d.ts +2 -2
- package/dist/program/dependency-graph.d.ts.map +1 -1
- package/dist/program/dependency-graph.js +26 -42
- package/dist/program/dependency-graph.js.map +1 -1
- package/dist/resolver/clr-bindings-resolver.d.ts +0 -1
- package/dist/resolver/clr-bindings-resolver.d.ts.map +1 -1
- package/dist/resolver/clr-bindings-resolver.js +22 -30
- package/dist/resolver/clr-bindings-resolver.js.map +1 -1
- package/dist/resolver/clr-bindings-resolver.test.js +0 -27
- package/dist/resolver/clr-bindings-resolver.test.js.map +1 -1
- package/dist/resolver/import-resolution.d.ts +1 -1
- package/dist/resolver/import-resolution.d.ts.map +1 -1
- package/dist/resolver/import-resolution.js +2 -7
- package/dist/resolver/import-resolution.js.map +1 -1
- package/dist/resolver/namespace.d.ts.map +1 -1
- package/dist/resolver/namespace.js +1 -3
- package/dist/resolver/namespace.js.map +1 -1
- package/dist/resolver/naming.d.ts.map +1 -1
- package/dist/resolver/naming.js +1 -0
- package/dist/resolver/naming.js.map +1 -1
- package/dist/tsbindgen/names.d.ts.map +1 -1
- package/dist/tsbindgen/names.js +4 -2
- package/dist/tsbindgen/names.js.map +1 -1
- package/dist/types/diagnostic.d.ts +1 -1
- package/dist/types/diagnostic.d.ts.map +1 -1
- package/dist/types/diagnostic.js.map +1 -1
- package/dist/validation/core-intrinsics.d.ts.map +1 -1
- package/dist/validation/core-intrinsics.js +3 -1
- package/dist/validation/core-intrinsics.js.map +1 -1
- package/dist/validation/extension-methods.d.ts.map +1 -1
- package/dist/validation/extension-methods.js.map +1 -1
- package/dist/validation/features.d.ts.map +1 -1
- package/dist/validation/features.js +38 -13
- package/dist/validation/features.js.map +1 -1
- package/dist/validation/features.test.d.ts +2 -0
- package/dist/validation/features.test.d.ts.map +1 -0
- package/dist/validation/features.test.js +273 -0
- package/dist/validation/features.test.js.map +1 -0
- package/dist/validation/generics.d.ts +1 -1
- package/dist/validation/generics.d.ts.map +1 -1
- package/dist/validation/generics.js +2 -26
- package/dist/validation/generics.js.map +1 -1
- package/dist/validation/imports.d.ts.map +1 -1
- package/dist/validation/imports.js +2 -1
- package/dist/validation/imports.js.map +1 -1
- package/dist/validation/imports.test.d.ts +2 -0
- package/dist/validation/imports.test.d.ts.map +1 -0
- package/dist/validation/imports.test.js +112 -0
- package/dist/validation/imports.test.js.map +1 -0
- package/dist/validation/static-safety.d.ts +6 -6
- package/dist/validation/static-safety.d.ts.map +1 -1
- package/dist/validation/static-safety.js +163 -94
- package/dist/validation/static-safety.js.map +1 -1
- package/dist/validation/unsupported-utility-types.d.ts +3 -3
- package/dist/validation/unsupported-utility-types.d.ts.map +1 -1
- package/dist/validation/unsupported-utility-types.js +4 -7
- package/dist/validation/unsupported-utility-types.js.map +1 -1
- package/dist/validator.maximus.test.d.ts +2 -0
- package/dist/validator.maximus.test.d.ts.map +1 -0
- package/dist/validator.maximus.test.js +1214 -0
- package/dist/validator.maximus.test.js.map +1 -0
- package/dist/validator.test.js +152 -18
- package/dist/validator.test.js.map +1 -1
- package/package.json +1 -1
- package/dist/ir/converters/statements/declarations/registry.d.ts +0 -96
- package/dist/ir/converters/statements/declarations/registry.d.ts.map +0 -1
- package/dist/ir/converters/statements/declarations/registry.js +0 -130
- package/dist/ir/converters/statements/declarations/registry.js.map +0 -1
- package/dist/ir/this-parameter-inference.test.d.ts +0 -13
- package/dist/ir/this-parameter-inference.test.d.ts.map +0 -1
- package/dist/ir/this-parameter-inference.test.js +0 -165
- package/dist/ir/this-parameter-inference.test.js.map +0 -1
- package/dist/metadata/bindings-loader.d.ts +0 -41
- package/dist/metadata/bindings-loader.d.ts.map +0 -1
- package/dist/metadata/bindings-loader.js +0 -308
- package/dist/metadata/bindings-loader.js.map +0 -1
- package/dist/metadata/bindings-loader.test.d.ts +0 -5
- package/dist/metadata/bindings-loader.test.d.ts.map +0 -1
- package/dist/metadata/bindings-loader.test.js +0 -117
- package/dist/metadata/bindings-loader.test.js.map +0 -1
- package/dist/metadata/index.d.ts +0 -8
- package/dist/metadata/index.d.ts.map +0 -1
- package/dist/metadata/index.js +0 -7
- package/dist/metadata/index.js.map +0 -1
- package/dist/metadata/library-loader.d.ts +0 -42
- package/dist/metadata/library-loader.d.ts.map +0 -1
- package/dist/metadata/library-loader.js +0 -126
- package/dist/metadata/library-loader.js.map +0 -1
- package/dist/metadata/loader.d.ts +0 -26
- package/dist/metadata/loader.d.ts.map +0 -1
- package/dist/metadata/loader.js +0 -333
- package/dist/metadata/loader.js.map +0 -1
- package/dist/metadata/loader.test.d.ts +0 -5
- package/dist/metadata/loader.test.d.ts.map +0 -1
- package/dist/metadata/loader.test.js +0 -119
- package/dist/metadata/loader.test.js.map +0 -1
- package/dist/resolver/naming-policy.d.ts +0 -20
- package/dist/resolver/naming-policy.d.ts.map +0 -1
- package/dist/resolver/naming-policy.js +0 -40
- package/dist/resolver/naming-policy.js.map +0 -1
- package/dist/types/bindings.d.ts +0 -153
- package/dist/types/bindings.d.ts.map +0 -1
- package/dist/types/bindings.js +0 -14
- package/dist/types/bindings.js.map +0 -1
- package/dist/types/metadata.d.ts +0 -196
- package/dist/types/metadata.d.ts.map +0 -1
- package/dist/types/metadata.js +0 -10
- package/dist/types/metadata.js.map +0 -1
- package/dist/types/nested-types.d.ts +0 -111
- package/dist/types/nested-types.d.ts.map +0 -1
- package/dist/types/nested-types.js +0 -176
- package/dist/types/nested-types.js.map +0 -1
- package/dist/types/nested-types.test.d.ts +0 -5
- package/dist/types/nested-types.test.d.ts.map +0 -1
- package/dist/types/nested-types.test.js +0 -135
- package/dist/types/nested-types.test.js.map +0 -1
- package/dist/types/ref-parameters.d.ts +0 -123
- package/dist/types/ref-parameters.d.ts.map +0 -1
- package/dist/types/ref-parameters.js +0 -203
- package/dist/types/ref-parameters.js.map +0 -1
- package/dist/types/ref-parameters.test.d.ts +0 -5
- package/dist/types/ref-parameters.test.d.ts.map +0 -1
- package/dist/types/ref-parameters.test.js +0 -147
- package/dist/types/ref-parameters.test.js.map +0 -1
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
import { describe, it } from "mocha";
|
|
2
|
+
import { expect } from "chai";
|
|
3
|
+
import * as ts from "typescript";
|
|
4
|
+
import { createBinding } from "../../../binding/index.js";
|
|
5
|
+
import { convertType } from "./orchestrator.js";
|
|
6
|
+
const createTestProgram = (source, fileName = "test.ts") => {
|
|
7
|
+
const compilerOptions = {
|
|
8
|
+
target: ts.ScriptTarget.ES2022,
|
|
9
|
+
module: ts.ModuleKind.NodeNext,
|
|
10
|
+
strict: true,
|
|
11
|
+
noEmit: true,
|
|
12
|
+
};
|
|
13
|
+
const host = ts.createCompilerHost(compilerOptions);
|
|
14
|
+
const originalGetSourceFile = host.getSourceFile;
|
|
15
|
+
const originalFileExists = host.fileExists;
|
|
16
|
+
const originalReadFile = host.readFile;
|
|
17
|
+
host.getSourceFile = (name, languageVersionOrOptions, onError, shouldCreateNewSourceFile) => {
|
|
18
|
+
if (name === fileName) {
|
|
19
|
+
return ts.createSourceFile(fileName, source, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
|
|
20
|
+
}
|
|
21
|
+
return originalGetSourceFile.call(host, name, languageVersionOrOptions, onError, shouldCreateNewSourceFile);
|
|
22
|
+
};
|
|
23
|
+
host.fileExists = (name) => name === fileName || originalFileExists.call(host, name);
|
|
24
|
+
host.readFile = (name) => name === fileName ? source : originalReadFile.call(host, name);
|
|
25
|
+
const program = ts.createProgram([fileName], compilerOptions, host);
|
|
26
|
+
const sourceFile = program.getSourceFile(fileName);
|
|
27
|
+
if (!sourceFile) {
|
|
28
|
+
throw new Error("missing source file");
|
|
29
|
+
}
|
|
30
|
+
return { sourceFile, binding: createBinding(program.getTypeChecker()) };
|
|
31
|
+
};
|
|
32
|
+
const convertAlias = (source, aliasName) => {
|
|
33
|
+
const { sourceFile, binding } = createTestProgram(source);
|
|
34
|
+
let alias;
|
|
35
|
+
for (const statement of sourceFile.statements) {
|
|
36
|
+
if (ts.isTypeAliasDeclaration(statement) &&
|
|
37
|
+
statement.name.text === aliasName) {
|
|
38
|
+
alias = statement;
|
|
39
|
+
break;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
if (!alias) {
|
|
43
|
+
throw new Error(`type alias ${aliasName} not found`);
|
|
44
|
+
}
|
|
45
|
+
return convertType(alias.type, binding);
|
|
46
|
+
};
|
|
47
|
+
describe("Type Converter - Tuple Rest Lowering", () => {
|
|
48
|
+
it("lowers pure variadic tuple to array type", () => {
|
|
49
|
+
const converted = convertAlias("type T = [...number[]];", "T");
|
|
50
|
+
expect(converted).to.deep.equal({
|
|
51
|
+
kind: "arrayType",
|
|
52
|
+
elementType: { kind: "primitiveType", name: "number" },
|
|
53
|
+
origin: "explicit",
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
it("lowers fixed + variadic tuple to array with union element", () => {
|
|
57
|
+
const converted = convertAlias("type T = [string, ...number[]];", "T");
|
|
58
|
+
expect(converted).to.deep.equal({
|
|
59
|
+
kind: "arrayType",
|
|
60
|
+
elementType: {
|
|
61
|
+
kind: "unionType",
|
|
62
|
+
types: [
|
|
63
|
+
{ kind: "primitiveType", name: "string" },
|
|
64
|
+
{ kind: "primitiveType", name: "number" },
|
|
65
|
+
],
|
|
66
|
+
},
|
|
67
|
+
origin: "explicit",
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
it("lowers fixed + variadic + fixed tuple to array with full union", () => {
|
|
71
|
+
const converted = convertAlias("type T = [number, ...string[], boolean];", "T");
|
|
72
|
+
expect(converted).to.deep.equal({
|
|
73
|
+
kind: "arrayType",
|
|
74
|
+
elementType: {
|
|
75
|
+
kind: "unionType",
|
|
76
|
+
types: [
|
|
77
|
+
{ kind: "primitiveType", name: "number" },
|
|
78
|
+
{ kind: "primitiveType", name: "string" },
|
|
79
|
+
{ kind: "primitiveType", name: "boolean" },
|
|
80
|
+
],
|
|
81
|
+
},
|
|
82
|
+
origin: "explicit",
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
it("handles named tuple members with rest", () => {
|
|
86
|
+
const converted = convertAlias("type T = [head: string, ...tail: number[]];", "T");
|
|
87
|
+
expect(converted).to.deep.equal({
|
|
88
|
+
kind: "arrayType",
|
|
89
|
+
elementType: {
|
|
90
|
+
kind: "unionType",
|
|
91
|
+
types: [
|
|
92
|
+
{ kind: "primitiveType", name: "string" },
|
|
93
|
+
{ kind: "primitiveType", name: "number" },
|
|
94
|
+
],
|
|
95
|
+
},
|
|
96
|
+
origin: "explicit",
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
describe("Type Converter - Mapped/Conditional Syntax", () => {
|
|
101
|
+
const expectUnknown = (type) => {
|
|
102
|
+
expect(type).to.deep.equal({ kind: "unknownType" });
|
|
103
|
+
};
|
|
104
|
+
it("lowers direct mapped type syntax to unknownType (never anyType)", () => {
|
|
105
|
+
const converted = convertAlias("type T<U> = { [K in keyof U]: U[K] | null };", "T");
|
|
106
|
+
expectUnknown(converted);
|
|
107
|
+
});
|
|
108
|
+
it("lowers direct conditional syntax to unknownType (never anyType)", () => {
|
|
109
|
+
const converted = convertAlias("type T<U> = U extends Promise<infer V> ? V : U;", "T");
|
|
110
|
+
expectUnknown(converted);
|
|
111
|
+
});
|
|
112
|
+
it("lowers parenthesized mapped syntax to unknownType", () => {
|
|
113
|
+
const converted = convertAlias("type T<U> = ({ [K in keyof U]: U[K] });", "T");
|
|
114
|
+
expectUnknown(converted);
|
|
115
|
+
});
|
|
116
|
+
it("lowers parenthesized conditional syntax to unknownType", () => {
|
|
117
|
+
const converted = convertAlias("type T<U> = (U extends string ? number : boolean);", "T");
|
|
118
|
+
expectUnknown(converted);
|
|
119
|
+
});
|
|
120
|
+
it("lowers infer-only syntax to unknownType", () => {
|
|
121
|
+
const converted = convertAlias("type T<U> = U extends Promise<infer V> ? V : never;", "T");
|
|
122
|
+
expectUnknown(converted);
|
|
123
|
+
});
|
|
124
|
+
it("never leaks mapped syntax to anyType when used in unions", () => {
|
|
125
|
+
const converted = convertAlias("type T<U> = ({ [K in keyof U]: U[K] } | string);", "T");
|
|
126
|
+
expect(converted.kind).to.equal("unionType");
|
|
127
|
+
if (converted.kind !== "unionType") {
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
expect(converted.types.some((member) => member.kind === "anyType" || member.kind === "unknownType")).to.equal(true);
|
|
131
|
+
expect(converted.types.some((member) => member.kind === "anyType")).to.equal(false);
|
|
132
|
+
});
|
|
133
|
+
it("never leaks conditional syntax to anyType when used in arrays", () => {
|
|
134
|
+
const converted = convertAlias("type T<U> = Array<U extends string ? number : boolean>;", "T");
|
|
135
|
+
expect(converted.kind).to.equal("arrayType");
|
|
136
|
+
if (converted.kind !== "arrayType") {
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
expect(converted.elementType.kind).to.equal("unknownType");
|
|
140
|
+
});
|
|
141
|
+
it("lowers direct infer type node fallback to unknownType", () => {
|
|
142
|
+
const converted = convertAlias("type T<U> = (U extends infer V ? V : never) extends infer X ? X : never;", "T");
|
|
143
|
+
expectUnknown(converted);
|
|
144
|
+
});
|
|
145
|
+
it("preserves readonly type operator while still lowering nested conditional to unknown", () => {
|
|
146
|
+
const converted = convertAlias("type T<U> = readonly (U extends string ? number : boolean)[];", "T");
|
|
147
|
+
expect(converted.kind).to.equal("arrayType");
|
|
148
|
+
if (converted.kind !== "arrayType") {
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
expect(converted.elementType.kind).to.equal("unknownType");
|
|
152
|
+
});
|
|
153
|
+
});
|
|
154
|
+
describe("Type Converter - Deterministic Type Operators", () => {
|
|
155
|
+
it("lowers keyof object literal types to a union of key literals", () => {
|
|
156
|
+
const converted = convertAlias("type T = keyof { alpha: number; beta: string };", "T");
|
|
157
|
+
expect(converted).to.deep.equal({
|
|
158
|
+
kind: "unionType",
|
|
159
|
+
types: [
|
|
160
|
+
{ kind: "literalType", value: "alpha" },
|
|
161
|
+
{ kind: "literalType", value: "beta" },
|
|
162
|
+
],
|
|
163
|
+
});
|
|
164
|
+
});
|
|
165
|
+
it("lowers keyof constrained type parameters via their constraint", () => {
|
|
166
|
+
const converted = convertAlias("type Keys<T extends { id: number; slug: string }> = keyof T;", "Keys");
|
|
167
|
+
expect(converted).to.deep.equal({
|
|
168
|
+
kind: "unionType",
|
|
169
|
+
types: [
|
|
170
|
+
{ kind: "literalType", value: "id" },
|
|
171
|
+
{ kind: "literalType", value: "slug" },
|
|
172
|
+
],
|
|
173
|
+
});
|
|
174
|
+
});
|
|
175
|
+
it("resolves indexed-access property lookups with literal keys", () => {
|
|
176
|
+
const converted = convertAlias('type T = { id: number; name: string }["id"];', "T");
|
|
177
|
+
expect(converted).to.deep.equal({ kind: "primitiveType", name: "number" });
|
|
178
|
+
});
|
|
179
|
+
it("resolves indexed-access unions of literal keys", () => {
|
|
180
|
+
const converted = convertAlias('type T = { id: number; name: string }["id" | "name"];', "T");
|
|
181
|
+
expect(converted).to.deep.equal({
|
|
182
|
+
kind: "unionType",
|
|
183
|
+
types: [
|
|
184
|
+
{ kind: "primitiveType", name: "number" },
|
|
185
|
+
{ kind: "primitiveType", name: "string" },
|
|
186
|
+
],
|
|
187
|
+
});
|
|
188
|
+
});
|
|
189
|
+
it("resolves indexed-access on constrained type parameters", () => {
|
|
190
|
+
const converted = convertAlias("type V<T extends { id: number; name: string }, K extends keyof T> = T[K];", "V");
|
|
191
|
+
expect(converted).to.deep.equal({
|
|
192
|
+
kind: "unionType",
|
|
193
|
+
types: [
|
|
194
|
+
{ kind: "primitiveType", name: "number" },
|
|
195
|
+
{ kind: "primitiveType", name: "string" },
|
|
196
|
+
],
|
|
197
|
+
});
|
|
198
|
+
});
|
|
199
|
+
it("expands finite template-literal types to literal unions", () => {
|
|
200
|
+
const converted = convertAlias('type T = `prefix-${"a" | "b"}`;', "T");
|
|
201
|
+
expect(converted).to.deep.equal({
|
|
202
|
+
kind: "unionType",
|
|
203
|
+
types: [
|
|
204
|
+
{ kind: "literalType", value: "prefix-a" },
|
|
205
|
+
{ kind: "literalType", value: "prefix-b" },
|
|
206
|
+
],
|
|
207
|
+
});
|
|
208
|
+
});
|
|
209
|
+
it("falls back template-literal types to string when expansion is non-finite", () => {
|
|
210
|
+
const converted = convertAlias("type T<U> = `prefix-${U}`;", "T");
|
|
211
|
+
expect(converted).to.deep.equal({ kind: "primitiveType", name: "string" });
|
|
212
|
+
});
|
|
213
|
+
it("falls back template-literal types to string when expansion is too large", () => {
|
|
214
|
+
const converted = convertAlias('type T = `${"a"|"b"|"c"|"d"|"e"}${"f"|"g"|"h"|"i"|"j"}${"k"|"l"|"m"|"n"|"o"}`;', "T");
|
|
215
|
+
expect(converted).to.deep.equal({ kind: "primitiveType", name: "string" });
|
|
216
|
+
});
|
|
217
|
+
});
|
|
218
|
+
describe("Type Converter - Symbol Dictionary Keys", () => {
|
|
219
|
+
it("lowers symbol keyword types to object reference types", () => {
|
|
220
|
+
const converted = convertAlias("type T = symbol;", "T");
|
|
221
|
+
expect(converted).to.deep.equal({
|
|
222
|
+
kind: "referenceType",
|
|
223
|
+
name: "object",
|
|
224
|
+
typeArguments: [],
|
|
225
|
+
});
|
|
226
|
+
});
|
|
227
|
+
it("converts symbol index signatures to dictionaryType with object keys", () => {
|
|
228
|
+
const converted = convertAlias("type T = { [key: symbol]: number };", "T");
|
|
229
|
+
expect(converted).to.deep.equal({
|
|
230
|
+
kind: "dictionaryType",
|
|
231
|
+
keyType: { kind: "referenceType", name: "object" },
|
|
232
|
+
valueType: { kind: "primitiveType", name: "number" },
|
|
233
|
+
});
|
|
234
|
+
});
|
|
235
|
+
it("converts Record<symbol, V> to dictionaryType with object keys", () => {
|
|
236
|
+
const converted = convertAlias("type T = Record<symbol, number>;", "T");
|
|
237
|
+
expect(converted).to.deep.equal({
|
|
238
|
+
kind: "dictionaryType",
|
|
239
|
+
keyType: { kind: "referenceType", name: "object" },
|
|
240
|
+
valueType: { kind: "primitiveType", name: "number" },
|
|
241
|
+
});
|
|
242
|
+
});
|
|
243
|
+
it("converts Record<string | symbol, V> to dictionaryType with object keys", () => {
|
|
244
|
+
const converted = convertAlias("type T = Record<string | symbol, number>;", "T");
|
|
245
|
+
expect(converted).to.deep.equal({
|
|
246
|
+
kind: "dictionaryType",
|
|
247
|
+
keyType: { kind: "referenceType", name: "object" },
|
|
248
|
+
valueType: { kind: "primitiveType", name: "number" },
|
|
249
|
+
});
|
|
250
|
+
});
|
|
251
|
+
it("converts symbol-only interface index signatures to dictionaryType with object keys", () => {
|
|
252
|
+
const converted = convertAlias(`
|
|
253
|
+
interface SymbolMap {
|
|
254
|
+
[key: symbol]: number;
|
|
255
|
+
}
|
|
256
|
+
type T = SymbolMap;
|
|
257
|
+
`, "T");
|
|
258
|
+
expect(converted).to.deep.equal({
|
|
259
|
+
kind: "dictionaryType",
|
|
260
|
+
keyType: { kind: "referenceType", name: "object" },
|
|
261
|
+
valueType: { kind: "primitiveType", name: "number" },
|
|
262
|
+
});
|
|
263
|
+
});
|
|
264
|
+
});
|
|
265
|
+
//# sourceMappingURL=orchestrator.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orchestrator.test.js","sourceRoot":"","sources":["../../../../../src/ir/type-system/internal/type-converter/orchestrator.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../../../../../src/ir/type-system/internal/type-converter/primitives.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAE5D;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,aAA2B,CAAC;AAE/D;;GAEG;AACH,eAAO,MAAM,uBAAuB,GAAI,MAAM,EAAE,CAAC,UAAU,KAAG,MAAM,GAAG,
|
|
1
|
+
{"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../../../../../src/ir/type-system/internal/type-converter/primitives.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAE5D;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,aAA2B,CAAC;AAE/D;;GAEG;AACH,eAAO,MAAM,uBAAuB,GAAI,MAAM,EAAE,CAAC,UAAU,KAAG,MAAM,GAAG,IAiCtE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAC9B,UAAU,MAAM,KACf,QAAQ,IAAI,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,WAIzD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,sBAAsB,GACjC,UAAU,MAAM,KACf,QAAQ,IAAI,KAAK,GAAG,MAEtB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAC3B,UAAU,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,WAAW,KAC/D,eAKF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAC9B,UAAU,KAAK,GAAG,MAAM,KACvB,eAKF,CAAC"}
|
|
@@ -26,6 +26,11 @@ export const convertPrimitiveKeyword = (kind) => {
|
|
|
26
26
|
return { kind: "primitiveType", name: "number" };
|
|
27
27
|
case ts.SyntaxKind.BooleanKeyword:
|
|
28
28
|
return { kind: "primitiveType", name: "boolean" };
|
|
29
|
+
case ts.SyntaxKind.SymbolKeyword:
|
|
30
|
+
// TypeScript `symbol` is lowered as an opaque object identity handle.
|
|
31
|
+
// This keeps AOT semantics deterministic without introducing JS runtime symbol
|
|
32
|
+
// mechanics into the IR type lattice.
|
|
33
|
+
return { kind: "referenceType", name: "object", typeArguments: [] };
|
|
29
34
|
case ts.SyntaxKind.NullKeyword:
|
|
30
35
|
return { kind: "primitiveType", name: "null" };
|
|
31
36
|
case ts.SyntaxKind.UndefinedKeyword:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"primitives.js","sourceRoot":"","sources":["../../../../../src/ir/type-system/internal/type-converter/primitives.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAGjC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;AAE/D;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,IAAmB,EAAiB,EAAE;IAC5E,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,EAAE,CAAC,UAAU,CAAC,aAAa;YAC9B,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QACnD,KAAK,EAAE,CAAC,UAAU,CAAC,aAAa;YAC9B,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QACnD,KAAK,EAAE,CAAC,UAAU,CAAC,cAAc;YAC/B,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACpD,KAAK,EAAE,CAAC,UAAU,CAAC,WAAW;YAC5B,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACjD,KAAK,EAAE,CAAC,UAAU,CAAC,gBAAgB;YACjC,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;QACtD,KAAK,EAAE,CAAC,UAAU,CAAC,WAAW;YAC5B,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;QAC9B,KAAK,EAAE,CAAC,UAAU,CAAC,UAAU;YAC3B,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QAC7B,KAAK,EAAE,CAAC,UAAU,CAAC,cAAc;YAC/B,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;QACjC,KAAK,EAAE,CAAC,UAAU,CAAC,YAAY;YAC7B,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;QAC/B,KAAK,EAAE,CAAC,UAAU,CAAC,aAAa;YAC9B,gEAAgE;YAChE,sDAAsD;YACtD,6DAA6D;YAC7D,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC;QACtE;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,QAAgB,EACoD,EAAE;IACtE,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,QAAQ,CAClE,QAAQ,CACT,CAAC;AACJ,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,QAAgB,EACY,EAAE;IAC9B,OAAO,sBAAsB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC9C,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,QAAgE,EAC/C,EAAE;IACnB,OAAO;QACL,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,QAAQ;KACf,CAAC;AACJ,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,QAAwB,EACP,EAAE;IACnB,OAAO;QACL,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,QAAQ;KACf,CAAC;AACJ,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"primitives.js","sourceRoot":"","sources":["../../../../../src/ir/type-system/internal/type-converter/primitives.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAGjC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;AAE/D;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,IAAmB,EAAiB,EAAE;IAC5E,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,EAAE,CAAC,UAAU,CAAC,aAAa;YAC9B,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QACnD,KAAK,EAAE,CAAC,UAAU,CAAC,aAAa;YAC9B,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QACnD,KAAK,EAAE,CAAC,UAAU,CAAC,cAAc;YAC/B,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACpD,KAAK,EAAE,CAAC,UAAU,CAAC,aAAa;YAC9B,sEAAsE;YACtE,+EAA+E;YAC/E,sCAAsC;YACtC,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC;QACtE,KAAK,EAAE,CAAC,UAAU,CAAC,WAAW;YAC5B,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACjD,KAAK,EAAE,CAAC,UAAU,CAAC,gBAAgB;YACjC,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;QACtD,KAAK,EAAE,CAAC,UAAU,CAAC,WAAW;YAC5B,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;QAC9B,KAAK,EAAE,CAAC,UAAU,CAAC,UAAU;YAC3B,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QAC7B,KAAK,EAAE,CAAC,UAAU,CAAC,cAAc;YAC/B,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;QACjC,KAAK,EAAE,CAAC,UAAU,CAAC,YAAY;YAC7B,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;QAC/B,KAAK,EAAE,CAAC,UAAU,CAAC,aAAa;YAC9B,gEAAgE;YAChE,sDAAsD;YACtD,6DAA6D;YAC7D,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC;QACtE;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,QAAgB,EACoD,EAAE;IACtE,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,QAAQ,CAClE,QAAQ,CACT,CAAC;AACJ,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,QAAgB,EACY,EAAE;IAC9B,OAAO,sBAAsB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC9C,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,QAAgE,EAC/C,EAAE;IACnB,OAAO;QACL,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,QAAQ;KACf,CAAC;AACJ,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,QAAwB,EACP,EAAE;IACnB,OAAO;QACL,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,QAAQ;KACf,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"references.d.ts","sourceRoot":"","sources":["../../../../../src/ir/type-system/internal/type-converter/references.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,MAAM,EAAuC,MAAM,mBAAmB,CAAC;AAiBhF,OAAO,KAAK,EAAE,OAAO,EAAmB,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"references.d.ts","sourceRoot":"","sources":["../../../../../src/ir/type-system/internal/type-converter/references.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,MAAM,EAAuC,MAAM,mBAAmB,CAAC;AAiBhF,OAAO,KAAK,EAAE,OAAO,EAAmB,MAAM,2BAA2B,CAAC;AA6d1E;;;GAGG;AACH,eAAO,MAAM,oBAAoB,GAC/B,MAAM,EAAE,CAAC,iBAAiB,EAC1B,SAAS,OAAO,EAChB,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,KAAK,MAAM,KAC3D,MAykBF,CAAC"}
|
|
@@ -94,28 +94,75 @@ const normalizeNamespaceAliasQualifiedName = (typeName) => {
|
|
|
94
94
|
return typeName;
|
|
95
95
|
return typeName.slice(lastDot + 1);
|
|
96
96
|
};
|
|
97
|
+
const isSymbolTypeReferenceNode = (node) => ts.isTypeReferenceNode(node) &&
|
|
98
|
+
ts.isIdentifier(node.typeName) &&
|
|
99
|
+
node.typeName.text === "symbol";
|
|
100
|
+
const classifyDictionaryKeyTypeNode = (keyTypeNode, convertType, binding) => {
|
|
101
|
+
const keyNodes = ts.isUnionTypeNode(keyTypeNode)
|
|
102
|
+
? keyTypeNode.types
|
|
103
|
+
: [keyTypeNode];
|
|
104
|
+
let sawString = false;
|
|
105
|
+
let sawNumber = false;
|
|
106
|
+
let sawSymbol = false;
|
|
107
|
+
for (const node of keyNodes) {
|
|
108
|
+
if (node.kind === ts.SyntaxKind.StringKeyword) {
|
|
109
|
+
sawString = true;
|
|
110
|
+
continue;
|
|
111
|
+
}
|
|
112
|
+
if (node.kind === ts.SyntaxKind.NumberKeyword) {
|
|
113
|
+
sawNumber = true;
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
if (node.kind === ts.SyntaxKind.SymbolKeyword ||
|
|
117
|
+
isSymbolTypeReferenceNode(node)) {
|
|
118
|
+
sawSymbol = true;
|
|
119
|
+
continue;
|
|
120
|
+
}
|
|
121
|
+
return undefined;
|
|
122
|
+
}
|
|
123
|
+
const distinctKinds = (sawString ? 1 : 0) + (sawNumber ? 1 : 0) + (sawSymbol ? 1 : 0);
|
|
124
|
+
if (distinctKinds === 0) {
|
|
125
|
+
return undefined;
|
|
126
|
+
}
|
|
127
|
+
if (distinctKinds > 1 || sawSymbol) {
|
|
128
|
+
return { kind: "referenceType", name: "object" };
|
|
129
|
+
}
|
|
130
|
+
if (sawNumber) {
|
|
131
|
+
return convertType(ts.factory.createKeywordTypeNode(ts.SyntaxKind.NumberKeyword), binding);
|
|
132
|
+
}
|
|
133
|
+
return convertType(ts.factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword), binding);
|
|
134
|
+
};
|
|
135
|
+
const structuralMembersCacheByBinding = new WeakMap();
|
|
136
|
+
const typeAliasBodyCacheByBinding = new WeakMap();
|
|
137
|
+
const getStructuralMembersCache = (binding) => {
|
|
138
|
+
let cache = structuralMembersCacheByBinding.get(binding);
|
|
139
|
+
if (!cache) {
|
|
140
|
+
cache = new Map();
|
|
141
|
+
structuralMembersCacheByBinding.set(binding, cache);
|
|
142
|
+
}
|
|
143
|
+
return cache;
|
|
144
|
+
};
|
|
145
|
+
const getTypeAliasBodyCache = (binding) => {
|
|
146
|
+
let cache = typeAliasBodyCacheByBinding.get(binding);
|
|
147
|
+
if (!cache) {
|
|
148
|
+
cache = new Map();
|
|
149
|
+
typeAliasBodyCacheByBinding.set(binding, cache);
|
|
150
|
+
}
|
|
151
|
+
return cache;
|
|
152
|
+
};
|
|
97
153
|
/**
|
|
98
|
-
*
|
|
99
|
-
* on recursive types like `type Node = { next: Node }`.
|
|
100
|
-
*
|
|
101
|
-
* DETERMINISTIC IR TYPING (INV-0 compliant):
|
|
102
|
-
* Key: DeclId.id (numeric identifier) - handles are stable identifiers
|
|
103
|
-
* Value: extracted members, null (not extractable), or "in-progress" sentinel
|
|
104
|
-
*/
|
|
105
|
-
const structuralMembersCache = new Map();
|
|
106
|
-
/**
|
|
107
|
-
* Cache for expanding non-declaration-file type aliases (TS-only) into their underlying shapes.
|
|
108
|
-
*
|
|
109
|
-
* Key: DeclId.id (numeric identifier)
|
|
110
|
-
* Value:
|
|
111
|
-
* - IrType: the *uninstantiated* alias body converted to IR (with typeParameterType nodes)
|
|
112
|
-
* - "in-progress": recursion guard for self-referential aliases
|
|
154
|
+
* Check whether a declaration file is a Tsonic-generated bindings artifact.
|
|
113
155
|
*
|
|
114
|
-
*
|
|
115
|
-
*
|
|
116
|
-
*
|
|
156
|
+
* We only apply aggressive declaration-file type-alias erasure to these files.
|
|
157
|
+
* Airplane-grade rule: Never erase type aliases from tsbindgen-produced stdlib
|
|
158
|
+
* packages (e.g., @tsonic/dotnet, @tsonic/core). Those aliases often encode CLR
|
|
159
|
+
* nominal types (interfaces, delegates, indexers) and must remain NOMINAL.
|
|
117
160
|
*/
|
|
118
|
-
const
|
|
161
|
+
const isTsonicBindingsDeclarationFile = (fileName) => {
|
|
162
|
+
// Cross-platform: handle both POSIX and Windows paths.
|
|
163
|
+
return (fileName.includes("/tsonic/bindings/") ||
|
|
164
|
+
fileName.includes("\\tsonic\\bindings\\"));
|
|
165
|
+
};
|
|
119
166
|
/**
|
|
120
167
|
* Determine whether a TS-only type alias target is safe to erase to its underlying shape.
|
|
121
168
|
*
|
|
@@ -202,6 +249,7 @@ const extractStructuralMembersFromDeclarations = (declId, binding, convertType)
|
|
|
202
249
|
return undefined;
|
|
203
250
|
}
|
|
204
251
|
// Check cache first (handles recursion)
|
|
252
|
+
const structuralMembersCache = getStructuralMembersCache(binding);
|
|
205
253
|
const cached = structuralMembersCache.get(declId);
|
|
206
254
|
if (cached === "in-progress") {
|
|
207
255
|
// Recursive reference - return undefined to break cycle
|
|
@@ -392,10 +440,8 @@ export const convertTypeReference = (node, binding, convertType) => {
|
|
|
392
440
|
// DETERMINISTIC: Only check SyntaxKind - no getTypeAtLocation.
|
|
393
441
|
// If the key is a type alias that resolves to string/number, it falls through
|
|
394
442
|
// to referenceType (the user should use `string` or `number` directly).
|
|
395
|
-
const
|
|
396
|
-
|
|
397
|
-
if (isStringKey || isNumberKey) {
|
|
398
|
-
const keyType = convertType(keyTypeNode, binding);
|
|
443
|
+
const keyType = classifyDictionaryKeyTypeNode(keyTypeNode, convertType, binding);
|
|
444
|
+
if (keyType) {
|
|
399
445
|
const valueType = convertType(valueTypeNode, binding);
|
|
400
446
|
return {
|
|
401
447
|
kind: "dictionaryType",
|
|
@@ -475,6 +521,20 @@ export const convertTypeReference = (node, binding, convertType) => {
|
|
|
475
521
|
if (declNode && ts.isTypeParameterDeclaration(declNode)) {
|
|
476
522
|
return { kind: "typeParameterType", name: typeName };
|
|
477
523
|
}
|
|
524
|
+
// tsbindgen-generated extension method helpers are exported as `ExtensionMethods`
|
|
525
|
+
// from facade modules, then imported with a local alias:
|
|
526
|
+
// import type { ExtensionMethods as __TsonicExt_Linq } from "@tsonic/dotnet/System.Linq.js";
|
|
527
|
+
//
|
|
528
|
+
// In this case the DeclId resolves to the import specifier (not the underlying
|
|
529
|
+
// `ExtensionMethods_<Namespace>` type alias declaration), so we must recognize
|
|
530
|
+
// the imported name and erase it to the receiver shape for deterministic typing.
|
|
531
|
+
if (declNode &&
|
|
532
|
+
ts.isImportSpecifier(declNode) &&
|
|
533
|
+
(declNode.propertyName ?? declNode.name).text === "ExtensionMethods" &&
|
|
534
|
+
node.typeArguments?.length === 1) {
|
|
535
|
+
const shape = node.typeArguments[0];
|
|
536
|
+
return shape ? convertType(shape, binding) : { kind: "unknownType" };
|
|
537
|
+
}
|
|
478
538
|
// Pure index-signature interface/type alias: treat as dictionaryType.
|
|
479
539
|
//
|
|
480
540
|
// This supports idiomatic TS dictionary surfaces:
|
|
@@ -501,9 +561,12 @@ export const convertTypeReference = (node, binding, convertType) => {
|
|
|
501
561
|
const indexSig = indexSignatures[0];
|
|
502
562
|
const keyParam = indexSig?.parameters[0];
|
|
503
563
|
const keyTypeNode = keyParam?.type;
|
|
504
|
-
const keyType =
|
|
505
|
-
|
|
506
|
-
|
|
564
|
+
const keyType = (() => {
|
|
565
|
+
if (!keyTypeNode) {
|
|
566
|
+
return { kind: "primitiveType", name: "string" };
|
|
567
|
+
}
|
|
568
|
+
return (classifyDictionaryKeyTypeNode(keyTypeNode, convertType, binding) ?? { kind: "primitiveType", name: "string" });
|
|
569
|
+
})();
|
|
507
570
|
const valueType = indexSig?.type
|
|
508
571
|
? convertType(indexSig.type, binding)
|
|
509
572
|
: { kind: "anyType" };
|
|
@@ -583,6 +646,70 @@ export const convertTypeReference = (node, binding, convertType) => {
|
|
|
583
646
|
return fnType;
|
|
584
647
|
}
|
|
585
648
|
}
|
|
649
|
+
// Declaration-file type aliases are often TS-only “ergonomic” names (including
|
|
650
|
+
// Tsonic source type aliases appended to generated bindings).
|
|
651
|
+
//
|
|
652
|
+
// These aliases have NO CLR identity and must erase to their underlying shapes
|
|
653
|
+
// so emission uses CLR-backed types.
|
|
654
|
+
//
|
|
655
|
+
// Examples (from generated bindings):
|
|
656
|
+
// export type Ok<T> = Internal.Ok__Alias_1<T>;
|
|
657
|
+
// export type Result<T, E = string> = Ok<T> | Err<E>;
|
|
658
|
+
//
|
|
659
|
+
// If we keep these nominal, the emitter will try to reference a CLR type
|
|
660
|
+
// named `Ok` / `Result` which does not exist, causing C# compile failures
|
|
661
|
+
// in downstream projects.
|
|
662
|
+
//
|
|
663
|
+
// IMPORTANT: We must NOT erase:
|
|
664
|
+
// - Delegate aliases (handled above)
|
|
665
|
+
// - Facade conditional “arity families” (handled below)
|
|
666
|
+
// - Conditional type aliases generally (unsupported in the compiler subset)
|
|
667
|
+
if (
|
|
668
|
+
// Only erase *type-only* declaration-file aliases.
|
|
669
|
+
//
|
|
670
|
+
// tsbindgen uses merged type+value symbols for CLR types:
|
|
671
|
+
// export interface DbSet_1$instance<T> { ... }
|
|
672
|
+
// export const DbSet_1: ...;
|
|
673
|
+
// export type DbSet_1<T> = DbSet_1$instance<T> & __DbSet_1$views<T>;
|
|
674
|
+
//
|
|
675
|
+
// These must remain NOMINAL so we don't pull synthetic helper interfaces
|
|
676
|
+
// like `__DbSet_1$views` into user code (they have no CLR binding).
|
|
677
|
+
//
|
|
678
|
+
// By contrast, tsonic-generated bindings often include TS-only re-exports:
|
|
679
|
+
// export type Ok<T> = Internal.Ok__Alias_1<T>;
|
|
680
|
+
// export type Result<T, E = string> = Ok<T> | Err<E>;
|
|
681
|
+
//
|
|
682
|
+
// Those aliases have no CLR identity and must erase to their shapes.
|
|
683
|
+
declNode.getSourceFile().isDeclarationFile &&
|
|
684
|
+
isTsonicBindingsDeclarationFile(declNode.getSourceFile().fileName) &&
|
|
685
|
+
!declInfo.valueDeclNode &&
|
|
686
|
+
!ts.isConditionalTypeNode(declNode.type)) {
|
|
687
|
+
const key = declId.id;
|
|
688
|
+
const typeAliasBodyCache = getTypeAliasBodyCache(binding);
|
|
689
|
+
const cached = typeAliasBodyCache.get(key);
|
|
690
|
+
if (cached !== "in-progress") {
|
|
691
|
+
const base = cached ??
|
|
692
|
+
(() => {
|
|
693
|
+
typeAliasBodyCache.set(key, "in-progress");
|
|
694
|
+
const converted = convertType(declNode.type, binding);
|
|
695
|
+
typeAliasBodyCache.set(key, converted);
|
|
696
|
+
return converted;
|
|
697
|
+
})();
|
|
698
|
+
const aliasTypeParams = (declNode.typeParameters ?? []).map((tp) => tp.name.text);
|
|
699
|
+
const refTypeArgs = (node.typeArguments ?? []).map((t) => convertType(t, binding));
|
|
700
|
+
if (aliasTypeParams.length > 0 && refTypeArgs.length > 0) {
|
|
701
|
+
const subst = new Map();
|
|
702
|
+
for (let i = 0; i < Math.min(aliasTypeParams.length, refTypeArgs.length); i++) {
|
|
703
|
+
const name = aliasTypeParams[i];
|
|
704
|
+
const arg = refTypeArgs[i];
|
|
705
|
+
if (name && arg)
|
|
706
|
+
subst.set(name, arg);
|
|
707
|
+
}
|
|
708
|
+
return subst.size > 0 ? substituteIrType(base, subst) : base;
|
|
709
|
+
}
|
|
710
|
+
return base;
|
|
711
|
+
}
|
|
712
|
+
}
|
|
586
713
|
// User-defined type aliases are TS-only and have no CLR identity.
|
|
587
714
|
//
|
|
588
715
|
// For deterministic typing (especially generic inference), we must erase them to their
|
|
@@ -598,6 +725,7 @@ export const convertTypeReference = (node, binding, convertType) => {
|
|
|
598
725
|
if (!declNode.getSourceFile().isDeclarationFile &&
|
|
599
726
|
isSafeToEraseUserTypeAliasTarget(declNode.type)) {
|
|
600
727
|
const key = declId.id;
|
|
728
|
+
const typeAliasBodyCache = getTypeAliasBodyCache(binding);
|
|
601
729
|
const cached = typeAliasBodyCache.get(key);
|
|
602
730
|
if (cached === "in-progress") {
|
|
603
731
|
// Recursive alias expansion: fall through to the referenceType path to avoid infinite recursion.
|
|
@@ -703,6 +831,24 @@ export const convertTypeReference = (node, binding, convertType) => {
|
|
|
703
831
|
.getDecl(declId);
|
|
704
832
|
return declInfo?.fqName ?? typeName;
|
|
705
833
|
})();
|
|
834
|
+
// tsbindgen exports extension method helpers as:
|
|
835
|
+
// export type { ExtensionMethods_System_Linq as ExtensionMethods } from "./__internal/extensions/index.js";
|
|
836
|
+
//
|
|
837
|
+
// Call sites (and generated bindings for Tsonic source) will often import these with a local alias:
|
|
838
|
+
// import type { ExtensionMethods as __TsonicExt_Linq } from "@tsonic/dotnet/System.Linq.js";
|
|
839
|
+
//
|
|
840
|
+
// In that case, the TypeReference's `typeName` is the local alias (e.g. "__TsonicExt_Linq"),
|
|
841
|
+
// and the earlier `declNode.name.text.startsWith("ExtensionMethods_")` erasure check won't match
|
|
842
|
+
// because the DeclId points at an import specifier, not the original type-alias declaration node.
|
|
843
|
+
//
|
|
844
|
+
// Airplane-grade rule: these helpers are TS-only wrappers and must erase to the receiver shape
|
|
845
|
+
// for deterministic IR typing / generic inference.
|
|
846
|
+
if ((resolvedName.startsWith("ExtensionMethods_") ||
|
|
847
|
+
resolvedName === "ExtensionMethods") &&
|
|
848
|
+
node.typeArguments?.length === 1) {
|
|
849
|
+
const shape = node.typeArguments[0];
|
|
850
|
+
return shape ? convertType(shape, binding) : { kind: "unknownType" };
|
|
851
|
+
}
|
|
706
852
|
// Reference type (user-defined or library)
|
|
707
853
|
return {
|
|
708
854
|
kind: "referenceType",
|