@tsonic/frontend 0.0.62 → 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 +0 -24
- package/dist/dotnet-metadata.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 -158
- package/dist/ir/binding/index.d.ts.map +1 -1
- package/dist/ir/binding/index.js +3 -1134
- package/dist/ir/binding/index.js.map +1 -1
- package/dist/ir/builder.test.js +223 -0
- 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 -1344
- 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 +37 -6
- package/dist/ir/converters/expressions/collections.js.map +1 -1
- package/dist/ir/converters/expressions/functions.js +1 -1
- 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/other.d.ts.map +1 -1
- package/dist/ir/converters/expressions/other.js +3 -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/declarations/classes/methods.js +1 -1
- package/dist/ir/converters/statements/declarations/classes/methods.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 +289 -2
- package/dist/ir/converters/statements/declarations/variables.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 +0 -2
- package/dist/ir/expression-converter.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 +1 -0
- 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 +315 -23
- 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 +67 -29
- 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 +145 -0
- 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.js +7 -7
- 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 -1044
- 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/unified-universe.test.js +2 -0
- package/dist/ir/type-system/internal/universe/unified-universe.test.js.map +1 -1
- 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 -358
- package/dist/ir/type-system/type-system.d.ts.map +1 -1
- package/dist/ir/type-system/type-system.js +67 -2945
- 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/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/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 -961
- package/dist/ir/validation/attribute-collection-pass.js.map +1 -1
- package/dist/ir/validation/attribute-collection-pass.test.js +12 -6
- package/dist/ir/validation/attribute-collection-pass.test.js.map +1 -1
- package/dist/ir/validation/soundness-gate.d.ts.map +1 -1
- package/dist/ir/validation/soundness-gate.js +2 -1
- package/dist/ir/validation/soundness-gate.js.map +1 -1
- package/dist/ir/validation/soundness-gate.test.js +69 -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/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 -32
- 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/naming.d.ts.map +1 -1
- package/dist/resolver/naming.js +1 -0
- package/dist/resolver/naming.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/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 -109
- 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,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Member access expression converter orchestrator
|
|
3
|
+
*
|
|
4
|
+
* Combines member-resolution and binding-resolution to convert
|
|
5
|
+
* property access and element access expressions.
|
|
6
|
+
*/
|
|
7
|
+
import * as ts from "typescript";
|
|
8
|
+
import { IrExpression } from "../../../types.js";
|
|
9
|
+
import type { ProgramContext } from "../../../program-context.js";
|
|
10
|
+
/**
|
|
11
|
+
* Convert property access or element access expression
|
|
12
|
+
*/
|
|
13
|
+
export declare const convertMemberExpression: (node: ts.PropertyAccessExpression | ts.ElementAccessExpression, ctx: ProgramContext) => IrExpression;
|
|
14
|
+
//# sourceMappingURL=access-converter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"access-converter.d.ts","sourceRoot":"","sources":["../../../../../src/ir/converters/expressions/access/access-converter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAGjC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAkElE;;GAEG;AACH,eAAO,MAAM,uBAAuB,GAClC,MAAM,EAAE,CAAC,wBAAwB,GAAG,EAAE,CAAC,uBAAuB,EAC9D,KAAK,cAAc,KAClB,YAuGF,CAAC"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Member access expression converter orchestrator
|
|
3
|
+
*
|
|
4
|
+
* Combines member-resolution and binding-resolution to convert
|
|
5
|
+
* property access and element access expressions.
|
|
6
|
+
*/
|
|
7
|
+
import * as ts from "typescript";
|
|
8
|
+
import { pathToFileURL } from "node:url";
|
|
9
|
+
import { dirname } from "node:path";
|
|
10
|
+
import { getSourceSpan } from "../helpers.js";
|
|
11
|
+
import { convertExpression } from "../../../expression-converter.js";
|
|
12
|
+
import { getDeclaredPropertyType, classifyComputedAccess, deriveElementType, } from "./member-resolution.js";
|
|
13
|
+
import { resolveHierarchicalBinding, resolveHierarchicalBindingFromMemberId, resolveExtensionMethodsBinding, } from "./binding-resolution.js";
|
|
14
|
+
import { createDiagnostic } from "../../../../types/diagnostic.js";
|
|
15
|
+
const SUPPORTED_IMPORT_META_FIELDS = new Set(["url", "filename", "dirname"]);
|
|
16
|
+
const tryConvertImportMetaProperty = (node, ctx) => {
|
|
17
|
+
if (!ts.isMetaProperty(node.expression))
|
|
18
|
+
return undefined;
|
|
19
|
+
if (node.expression.keywordToken !== ts.SyntaxKind.ImportKeyword ||
|
|
20
|
+
node.expression.name.text !== "meta") {
|
|
21
|
+
return undefined;
|
|
22
|
+
}
|
|
23
|
+
const filePath = node.getSourceFile().fileName.replace(/\\/g, "/");
|
|
24
|
+
const field = node.name.text;
|
|
25
|
+
const sourceSpan = getSourceSpan(node);
|
|
26
|
+
if (!SUPPORTED_IMPORT_META_FIELDS.has(field)) {
|
|
27
|
+
ctx.diagnostics.push(createDiagnostic("TSN2001", "error", `import.meta.${field} is not supported in strict AOT mode`, sourceSpan, "Supported fields: import.meta.url, import.meta.filename, import.meta.dirname"));
|
|
28
|
+
return {
|
|
29
|
+
kind: "literal",
|
|
30
|
+
value: undefined,
|
|
31
|
+
raw: "undefined",
|
|
32
|
+
inferredType: { kind: "primitiveType", name: "undefined" },
|
|
33
|
+
sourceSpan,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
const value = field === "url"
|
|
37
|
+
? pathToFileURL(filePath).href
|
|
38
|
+
: field === "dirname"
|
|
39
|
+
? dirname(filePath).replace(/\\/g, "/")
|
|
40
|
+
: filePath;
|
|
41
|
+
return {
|
|
42
|
+
kind: "literal",
|
|
43
|
+
value,
|
|
44
|
+
raw: JSON.stringify(value),
|
|
45
|
+
inferredType: { kind: "primitiveType", name: "string" },
|
|
46
|
+
sourceSpan,
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* Convert property access or element access expression
|
|
51
|
+
*/
|
|
52
|
+
export const convertMemberExpression = (node, ctx) => {
|
|
53
|
+
const isOptional = node.questionDotToken !== undefined;
|
|
54
|
+
const sourceSpan = getSourceSpan(node);
|
|
55
|
+
if (ts.isPropertyAccessExpression(node)) {
|
|
56
|
+
const importMetaExpr = tryConvertImportMetaProperty(node, ctx);
|
|
57
|
+
if (importMetaExpr)
|
|
58
|
+
return importMetaExpr;
|
|
59
|
+
const object = convertExpression(node.expression, ctx, undefined);
|
|
60
|
+
const propertyName = node.name.text;
|
|
61
|
+
// Try to resolve hierarchical binding
|
|
62
|
+
const memberBinding = resolveExtensionMethodsBinding(node, propertyName, ctx) ??
|
|
63
|
+
resolveHierarchicalBindingFromMemberId(node, propertyName, ctx) ??
|
|
64
|
+
resolveHierarchicalBinding(object, propertyName, ctx);
|
|
65
|
+
// DETERMINISTIC TYPING: Property type comes from NominalEnv + TypeRegistry for
|
|
66
|
+
// user-defined types (including inherited members), with fallback to Binding layer
|
|
67
|
+
// for built-ins and CLR types.
|
|
68
|
+
//
|
|
69
|
+
// The receiver's inferredType enables NominalEnv to walk inheritance chains
|
|
70
|
+
// and substitute type parameters correctly for inherited generic members.
|
|
71
|
+
//
|
|
72
|
+
// Built-ins like string.length work because globals declare them with proper types.
|
|
73
|
+
// If getDeclaredPropertyType returns undefined, it means the property declaration
|
|
74
|
+
// is missing - use unknownType as poison so validation can emit TSN5203.
|
|
75
|
+
//
|
|
76
|
+
// EXCEPTION: If memberBinding exists AND declaredType is undefined, return undefined.
|
|
77
|
+
// This handles pure CLR-bound methods like Console.WriteLine that have no TS declaration.
|
|
78
|
+
const declaredType = getDeclaredPropertyType(node, object.inferredType, ctx);
|
|
79
|
+
// Hierarchical bindings: namespace.type is a static type reference, not a runtime
|
|
80
|
+
// value. When this pattern is present in the binding manifest, avoid poisoning the
|
|
81
|
+
// receiver with unknownType; the emitter uses "no inferredType" to classify the
|
|
82
|
+
// receiver as a static type, enabling global::Type.Member emission.
|
|
83
|
+
const isNamespaceTypeReference = object.kind === "identifier" &&
|
|
84
|
+
ctx.bindings
|
|
85
|
+
.getNamespace(object.name)
|
|
86
|
+
?.types.some((t) => t.alias === propertyName) === true;
|
|
87
|
+
// DETERMINISTIC TYPING: Set inferredType for validation passes (like numeric proof).
|
|
88
|
+
// The emitter uses memberBinding separately for C# casing (e.g., length -> Length).
|
|
89
|
+
//
|
|
90
|
+
// Priority order for inferredType:
|
|
91
|
+
// 1. If declaredType exists, use it (covers built-ins like string.length -> int)
|
|
92
|
+
// 2. If memberBinding exists but no declaredType, use undefined (pure CLR-bound)
|
|
93
|
+
// 3. Otherwise, poison with unknownType for validation (TSN5203)
|
|
94
|
+
//
|
|
95
|
+
// Note: Both memberBinding AND inferredType can be set - they serve different purposes:
|
|
96
|
+
// - memberBinding: used by emitter for C# member names
|
|
97
|
+
// - inferredType: used by validation passes for type checking
|
|
98
|
+
//
|
|
99
|
+
// Class fields without explicit type annotations will emit TSN5203.
|
|
100
|
+
// Users must add explicit types like `count: int = 0` instead of `count = 0`.
|
|
101
|
+
const propertyInferredType = declaredType
|
|
102
|
+
? declaredType
|
|
103
|
+
: isNamespaceTypeReference
|
|
104
|
+
? undefined
|
|
105
|
+
: memberBinding
|
|
106
|
+
? undefined
|
|
107
|
+
: { kind: "unknownType" };
|
|
108
|
+
return {
|
|
109
|
+
kind: "memberAccess",
|
|
110
|
+
object,
|
|
111
|
+
property: propertyName,
|
|
112
|
+
isComputed: false,
|
|
113
|
+
isOptional,
|
|
114
|
+
inferredType: propertyInferredType,
|
|
115
|
+
sourceSpan,
|
|
116
|
+
memberBinding,
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
// Element access (computed): obj[expr]
|
|
121
|
+
const object = convertExpression(node.expression, ctx, undefined);
|
|
122
|
+
// DETERMINISTIC TYPING: Use object's inferredType (not getInferredType)
|
|
123
|
+
const objectType = object.inferredType;
|
|
124
|
+
// Classify the access kind for proof pass
|
|
125
|
+
// This determines whether Int32 proof is required for the index
|
|
126
|
+
const accessKind = classifyComputedAccess(objectType, ctx);
|
|
127
|
+
// Derive element type from object type
|
|
128
|
+
const elementType = deriveElementType(objectType, ctx);
|
|
129
|
+
return {
|
|
130
|
+
kind: "memberAccess",
|
|
131
|
+
object,
|
|
132
|
+
property: convertExpression(node.argumentExpression, ctx, undefined),
|
|
133
|
+
isComputed: true,
|
|
134
|
+
isOptional,
|
|
135
|
+
inferredType: elementType,
|
|
136
|
+
sourceSpan,
|
|
137
|
+
accessKind,
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
};
|
|
141
|
+
//# sourceMappingURL=access-converter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"access-converter.js","sourceRoot":"","sources":["../../../../../src/ir/converters/expressions/access/access-converter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Binding resolution for member access expressions
|
|
3
|
+
*
|
|
4
|
+
* Hierarchical binding lookup, extension method resolution, and
|
|
5
|
+
* MemberId-based fallback binding for CLR property casing.
|
|
6
|
+
*/
|
|
7
|
+
import * as ts from "typescript";
|
|
8
|
+
import { IrMemberExpression } from "../../../types.js";
|
|
9
|
+
import { convertExpression } from "../../../expression-converter.js";
|
|
10
|
+
import type { ProgramContext } from "../../../program-context.js";
|
|
11
|
+
/**
|
|
12
|
+
* Resolve hierarchical binding for a member access
|
|
13
|
+
* Handles namespace.type, type.member, directType.member, and instance.member patterns
|
|
14
|
+
*/
|
|
15
|
+
export declare const resolveHierarchicalBinding: (object: ReturnType<typeof convertExpression>, propertyName: string, ctx: ProgramContext) => IrMemberExpression["memberBinding"];
|
|
16
|
+
/**
|
|
17
|
+
* Resolve hierarchical binding for a member access using Binding-resolved MemberId.
|
|
18
|
+
*
|
|
19
|
+
* This is a fallback for cases where the receiver's inferredType is unavailable
|
|
20
|
+
* (e.g., local variable typing inferred from a complex initializer), but TS can
|
|
21
|
+
* still resolve the member symbol deterministically.
|
|
22
|
+
*
|
|
23
|
+
* Critical use case: CLR property casing (e.g., `.expression` → `.Expression`).
|
|
24
|
+
*/
|
|
25
|
+
export declare const resolveHierarchicalBindingFromMemberId: (node: ts.PropertyAccessExpression, propertyName: string, ctx: ProgramContext) => IrMemberExpression["memberBinding"];
|
|
26
|
+
/**
|
|
27
|
+
* Resolve instance-style extension method bindings from tsbindgen's `ExtensionMethods` typing.
|
|
28
|
+
*
|
|
29
|
+
* tsbindgen emits extension methods as interface members on `__Ext_*` types, and users
|
|
30
|
+
* opt in via `ExtensionMethods<TShape>`. At runtime those members do not exist, so we
|
|
31
|
+
* must attach the underlying CLR binding so the emitter can lower the call to an
|
|
32
|
+
* explicit static invocation.
|
|
33
|
+
*/
|
|
34
|
+
export declare const resolveExtensionMethodsBinding: (node: ts.PropertyAccessExpression, propertyName: string, ctx: ProgramContext) => IrMemberExpression["memberBinding"];
|
|
35
|
+
//# sourceMappingURL=binding-resolution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"binding-resolution.d.ts","sourceRoot":"","sources":["../../../../../src/ir/converters/expressions/access/binding-resolution.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAGjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAQlE;;;GAGG;AACH,eAAO,MAAM,0BAA0B,GACrC,QAAQ,UAAU,CAAC,OAAO,iBAAiB,CAAC,EAC5C,cAAc,MAAM,EACpB,KAAK,cAAc,KAClB,kBAAkB,CAAC,eAAe,CA+GpC,CAAC;AAsDF;;;;;;;;GAQG;AACH,eAAO,MAAM,sCAAsC,GACjD,MAAM,EAAE,CAAC,wBAAwB,EACjC,cAAc,MAAM,EACpB,KAAK,cAAc,KAClB,kBAAkB,CAAC,eAAe,CAgJpC,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,8BAA8B,GACzC,MAAM,EAAE,CAAC,wBAAwB,EACjC,cAAc,MAAM,EACpB,KAAK,cAAc,KAClB,kBAAkB,CAAC,eAAe,CA6IpC,CAAC"}
|
|
@@ -0,0 +1,384 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Binding resolution for member access expressions
|
|
3
|
+
*
|
|
4
|
+
* Hierarchical binding lookup, extension method resolution, and
|
|
5
|
+
* MemberId-based fallback binding for CLR property casing.
|
|
6
|
+
*/
|
|
7
|
+
import * as ts from "typescript";
|
|
8
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
9
|
+
import { dirname, join } from "node:path";
|
|
10
|
+
import { getSourceSpan } from "../helpers.js";
|
|
11
|
+
import { tsbindgenClrTypeNameToTsTypeName } from "../../../../tsbindgen/names.js";
|
|
12
|
+
import { createDiagnostic } from "../../../../types/diagnostic.js";
|
|
13
|
+
import { loadBindingsFromPath } from "../../../../program/bindings.js";
|
|
14
|
+
import { extractTypeName } from "./member-resolution.js";
|
|
15
|
+
/**
|
|
16
|
+
* Resolve hierarchical binding for a member access
|
|
17
|
+
* Handles namespace.type, type.member, directType.member, and instance.member patterns
|
|
18
|
+
*/
|
|
19
|
+
export const resolveHierarchicalBinding = (object, propertyName, ctx) => {
|
|
20
|
+
const registry = ctx.bindings;
|
|
21
|
+
const toIrMemberBinding = (overloads) => {
|
|
22
|
+
const first = overloads[0];
|
|
23
|
+
if (!first)
|
|
24
|
+
return undefined;
|
|
25
|
+
const getTargetKey = (m) => `${m.binding.assembly}:${m.binding.type}::${m.binding.member}`;
|
|
26
|
+
const targetKey = getTargetKey(first);
|
|
27
|
+
if (overloads.some((m) => getTargetKey(m) !== targetKey)) {
|
|
28
|
+
// Unsafe: overloads map to different CLR targets.
|
|
29
|
+
return undefined;
|
|
30
|
+
}
|
|
31
|
+
const getModifiersKey = (m) => {
|
|
32
|
+
const mods = m.parameterModifiers ?? [];
|
|
33
|
+
if (mods.length === 0)
|
|
34
|
+
return "";
|
|
35
|
+
return [...mods]
|
|
36
|
+
.slice()
|
|
37
|
+
.sort((a, b) => a.index - b.index)
|
|
38
|
+
.map((mod) => `${mod.index}:${mod.modifier}`)
|
|
39
|
+
.join(",");
|
|
40
|
+
};
|
|
41
|
+
const modsKey = getModifiersKey(first);
|
|
42
|
+
const modsConsistent = overloads.every((m) => getModifiersKey(m) === modsKey);
|
|
43
|
+
return {
|
|
44
|
+
assembly: first.binding.assembly,
|
|
45
|
+
type: first.binding.type,
|
|
46
|
+
member: first.binding.member,
|
|
47
|
+
// IMPORTANT: Only attach parameterModifiers if consistent across all overloads.
|
|
48
|
+
// Overloads can differ in ref/out/in, and those must be selected at call time.
|
|
49
|
+
parameterModifiers: modsConsistent &&
|
|
50
|
+
first.parameterModifiers &&
|
|
51
|
+
first.parameterModifiers.length > 0
|
|
52
|
+
? first.parameterModifiers
|
|
53
|
+
: undefined,
|
|
54
|
+
isExtensionMethod: first.isExtensionMethod,
|
|
55
|
+
};
|
|
56
|
+
};
|
|
57
|
+
// Case 1: object is identifier → check if it's a namespace, then check if property is a type
|
|
58
|
+
if (object.kind === "identifier") {
|
|
59
|
+
const namespace = registry.getNamespace(object.name);
|
|
60
|
+
if (namespace) {
|
|
61
|
+
// Found namespace binding, check if property is a type within this namespace
|
|
62
|
+
// Note: After schema swap, we look up by alias (TS identifier)
|
|
63
|
+
const type = namespace.types.find((t) => t.alias === propertyName);
|
|
64
|
+
if (type) {
|
|
65
|
+
// This member access is namespace.type - we don't emit a member binding here
|
|
66
|
+
// because we're just accessing a type, not calling a member
|
|
67
|
+
return undefined;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
// Case 1b: object is a direct type import (like `Console` imported directly)
|
|
71
|
+
// Check if the identifier is a type alias, and if so, look up the member
|
|
72
|
+
// First try by local name, then by original name (handles aliased imports like `import { String as ClrString }`)
|
|
73
|
+
const directType = registry.getType(object.name) ??
|
|
74
|
+
(object.originalName ? registry.getType(object.originalName) : undefined);
|
|
75
|
+
if (directType) {
|
|
76
|
+
const overloads = registry.getMemberOverloads(directType.alias, propertyName);
|
|
77
|
+
if (!overloads || overloads.length === 0)
|
|
78
|
+
return undefined;
|
|
79
|
+
return toIrMemberBinding(overloads);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
// Case 2: object is member expression with a type reference → check if property is a member
|
|
83
|
+
if (object.kind === "memberAccess" && !object.isComputed) {
|
|
84
|
+
// Walk up the chain to find if this is a type reference
|
|
85
|
+
// For systemLinq.enumerable, the object is "systemLinq" and property is "enumerable"
|
|
86
|
+
if (object.object.kind === "identifier") {
|
|
87
|
+
const namespace = registry.getNamespace(object.object.name);
|
|
88
|
+
if (namespace && typeof object.property === "string") {
|
|
89
|
+
const type = namespace.types.find((t) => t.alias === object.property);
|
|
90
|
+
if (type) {
|
|
91
|
+
// The object is a type reference (namespace.type), now check if property is a member
|
|
92
|
+
const overloads = registry.getMemberOverloads(type.alias, propertyName);
|
|
93
|
+
if (!overloads || overloads.length === 0)
|
|
94
|
+
return undefined;
|
|
95
|
+
return toIrMemberBinding(overloads);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
// Case 3: Instance member access (e.g., numbers.add where numbers is List<T>)
|
|
101
|
+
// Use the object's inferred type to look up the member binding
|
|
102
|
+
const objectTypeName = extractTypeName(object.inferredType);
|
|
103
|
+
if (objectTypeName) {
|
|
104
|
+
// Look up member by type alias and property name
|
|
105
|
+
const overloads = registry.getMemberOverloads(objectTypeName, propertyName);
|
|
106
|
+
if (!overloads || overloads.length === 0)
|
|
107
|
+
return undefined;
|
|
108
|
+
return toIrMemberBinding(overloads);
|
|
109
|
+
}
|
|
110
|
+
return undefined;
|
|
111
|
+
};
|
|
112
|
+
const findNearestBindingsJson = (filePath) => {
|
|
113
|
+
let currentDir = dirname(filePath);
|
|
114
|
+
while (true) {
|
|
115
|
+
const candidate = join(currentDir, "bindings.json");
|
|
116
|
+
if (existsSync(candidate))
|
|
117
|
+
return candidate;
|
|
118
|
+
const parentDir = dirname(currentDir);
|
|
119
|
+
if (parentDir === currentDir)
|
|
120
|
+
return undefined;
|
|
121
|
+
currentDir = parentDir;
|
|
122
|
+
}
|
|
123
|
+
};
|
|
124
|
+
const disambiguateOverloadsByDeclaringType = (overloads, memberId, declaringTypeTsName, ctx) => {
|
|
125
|
+
const declSourceFilePath = ctx.binding.getSourceFilePathOfMember(memberId);
|
|
126
|
+
if (!declSourceFilePath)
|
|
127
|
+
return undefined;
|
|
128
|
+
const bindingsPath = findNearestBindingsJson(declSourceFilePath);
|
|
129
|
+
if (!bindingsPath)
|
|
130
|
+
return undefined;
|
|
131
|
+
const raw = (() => {
|
|
132
|
+
try {
|
|
133
|
+
return JSON.parse(readFileSync(bindingsPath, "utf8"));
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
return undefined;
|
|
137
|
+
}
|
|
138
|
+
})();
|
|
139
|
+
if (!raw || typeof raw !== "object")
|
|
140
|
+
return undefined;
|
|
141
|
+
const types = raw.types;
|
|
142
|
+
if (!Array.isArray(types))
|
|
143
|
+
return undefined;
|
|
144
|
+
const typeEntry = types.find((t) => {
|
|
145
|
+
if (!t || typeof t !== "object")
|
|
146
|
+
return false;
|
|
147
|
+
const clrName = t.clrName;
|
|
148
|
+
if (typeof clrName !== "string")
|
|
149
|
+
return false;
|
|
150
|
+
return tsbindgenClrTypeNameToTsTypeName(clrName) === declaringTypeTsName;
|
|
151
|
+
});
|
|
152
|
+
const expectedClrType = typeEntry && typeof typeEntry.clrName === "string"
|
|
153
|
+
? typeEntry.clrName
|
|
154
|
+
: undefined;
|
|
155
|
+
if (!expectedClrType)
|
|
156
|
+
return undefined;
|
|
157
|
+
const filtered = overloads.filter((m) => m.binding.type === expectedClrType);
|
|
158
|
+
return filtered.length > 0 ? filtered : undefined;
|
|
159
|
+
};
|
|
160
|
+
/**
|
|
161
|
+
* Resolve hierarchical binding for a member access using Binding-resolved MemberId.
|
|
162
|
+
*
|
|
163
|
+
* This is a fallback for cases where the receiver's inferredType is unavailable
|
|
164
|
+
* (e.g., local variable typing inferred from a complex initializer), but TS can
|
|
165
|
+
* still resolve the member symbol deterministically.
|
|
166
|
+
*
|
|
167
|
+
* Critical use case: CLR property casing (e.g., `.expression` → `.Expression`).
|
|
168
|
+
*/
|
|
169
|
+
export const resolveHierarchicalBindingFromMemberId = (node, propertyName, ctx) => {
|
|
170
|
+
const memberId = ctx.binding.resolvePropertyAccess(node);
|
|
171
|
+
if (!memberId)
|
|
172
|
+
return undefined;
|
|
173
|
+
const declaringTypeName = ctx.binding.getDeclaringTypeNameOfMember(memberId);
|
|
174
|
+
if (!declaringTypeName)
|
|
175
|
+
return undefined;
|
|
176
|
+
const normalizeDeclaringType = (name) => {
|
|
177
|
+
if (name.endsWith("$instance"))
|
|
178
|
+
return name.slice(0, -"$instance".length);
|
|
179
|
+
if (name.startsWith("__") && name.endsWith("$views")) {
|
|
180
|
+
return name.slice("__".length, -"$views".length);
|
|
181
|
+
}
|
|
182
|
+
return name;
|
|
183
|
+
};
|
|
184
|
+
const typeAlias = normalizeDeclaringType(declaringTypeName);
|
|
185
|
+
let overloadsAll = ctx.bindings.getMemberOverloads(typeAlias, propertyName);
|
|
186
|
+
if (!overloadsAll || overloadsAll.length === 0) {
|
|
187
|
+
const declSourceFilePath = ctx.binding.getSourceFilePathOfMember(memberId);
|
|
188
|
+
const bindingsPath = declSourceFilePath !== undefined
|
|
189
|
+
? findNearestBindingsJson(declSourceFilePath)
|
|
190
|
+
: undefined;
|
|
191
|
+
// Airplane-grade: If we can locate the bindings.json that corresponds to the
|
|
192
|
+
// tsbindgen declaration, load it on-demand and retry. This avoids relying on
|
|
193
|
+
// "import closure" heuristics and ensures CLR binding lookup is based on the
|
|
194
|
+
// declaration's actual owning bindings.json.
|
|
195
|
+
if (bindingsPath) {
|
|
196
|
+
loadBindingsFromPath(ctx.bindings, bindingsPath);
|
|
197
|
+
overloadsAll = ctx.bindings.getMemberOverloads(typeAlias, propertyName);
|
|
198
|
+
}
|
|
199
|
+
// Airplane-grade rule: If this member resolves to a tsbindgen declaration,
|
|
200
|
+
// we MUST have a CLR binding; we must never guess member names via naming policy.
|
|
201
|
+
//
|
|
202
|
+
// We treat it as CLR-bound if:
|
|
203
|
+
// - The declaring type is a tsbindgen extension interface (`__Ext_*`), OR
|
|
204
|
+
// - We can locate a bindings.json near the declaration source file.
|
|
205
|
+
const isClrBound = declaringTypeName.startsWith("__Ext_") || bindingsPath !== undefined;
|
|
206
|
+
if (isClrBound && (!overloadsAll || overloadsAll.length === 0)) {
|
|
207
|
+
ctx.diagnostics.push(createDiagnostic("TSN4004", "error", `Missing CLR binding for '${typeAlias}.${propertyName}'.`, getSourceSpan(node), bindingsPath
|
|
208
|
+
? `No matching member binding was found in the loaded bindings for this tsbindgen declaration. (bindings.json: ${bindingsPath})`
|
|
209
|
+
: "No matching member binding was found for this tsbindgen extension interface member."));
|
|
210
|
+
}
|
|
211
|
+
return undefined;
|
|
212
|
+
}
|
|
213
|
+
let overloads = overloadsAll;
|
|
214
|
+
const targetKeys = new Set(overloads.map((m) => `${m.binding.assembly}:${m.binding.type}::${m.binding.member}`));
|
|
215
|
+
if (targetKeys.size > 1) {
|
|
216
|
+
const disambiguated = disambiguateOverloadsByDeclaringType(overloads, memberId, typeAlias, ctx);
|
|
217
|
+
if (disambiguated) {
|
|
218
|
+
overloads = disambiguated;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
const first = overloads[0];
|
|
222
|
+
if (!first)
|
|
223
|
+
return undefined;
|
|
224
|
+
const targetKey = `${first.binding.assembly}:${first.binding.type}::${first.binding.member}`;
|
|
225
|
+
if (overloads.some((m) => `${m.binding.assembly}:${m.binding.type}::${m.binding.member}` !==
|
|
226
|
+
targetKey)) {
|
|
227
|
+
const declSourceFilePath = ctx.binding.getSourceFilePathOfMember(memberId);
|
|
228
|
+
const bindingsPath = declSourceFilePath !== undefined
|
|
229
|
+
? findNearestBindingsJson(declSourceFilePath)
|
|
230
|
+
: undefined;
|
|
231
|
+
// Only treat this as a CLR ambiguity when we can locate a bindings.json near the
|
|
232
|
+
// TS declaration source (tsbindgen packages). Otherwise, fall back to "no binding"
|
|
233
|
+
// and let local codepaths handle naming policy.
|
|
234
|
+
if (bindingsPath) {
|
|
235
|
+
const targets = [
|
|
236
|
+
...new Set(overloads.map((m) => `${m.binding.type}.${m.binding.member}`)),
|
|
237
|
+
]
|
|
238
|
+
.sort()
|
|
239
|
+
.join(", ");
|
|
240
|
+
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})`));
|
|
241
|
+
}
|
|
242
|
+
return undefined;
|
|
243
|
+
}
|
|
244
|
+
const getModifiersKey = (m) => {
|
|
245
|
+
const mods = m.parameterModifiers ?? [];
|
|
246
|
+
if (mods.length === 0)
|
|
247
|
+
return "";
|
|
248
|
+
return [...mods]
|
|
249
|
+
.slice()
|
|
250
|
+
.sort((a, b) => a.index - b.index)
|
|
251
|
+
.map((mod) => `${mod.index}:${mod.modifier}`)
|
|
252
|
+
.join(",");
|
|
253
|
+
};
|
|
254
|
+
const modsKey = getModifiersKey(first);
|
|
255
|
+
const modsConsistent = overloads.every((m) => getModifiersKey(m) === modsKey);
|
|
256
|
+
return {
|
|
257
|
+
assembly: first.binding.assembly,
|
|
258
|
+
type: first.binding.type,
|
|
259
|
+
member: first.binding.member,
|
|
260
|
+
parameterModifiers: modsConsistent &&
|
|
261
|
+
first.parameterModifiers &&
|
|
262
|
+
first.parameterModifiers.length > 0
|
|
263
|
+
? first.parameterModifiers
|
|
264
|
+
: undefined,
|
|
265
|
+
isExtensionMethod: first.isExtensionMethod,
|
|
266
|
+
};
|
|
267
|
+
};
|
|
268
|
+
/**
|
|
269
|
+
* Resolve instance-style extension method bindings from tsbindgen's `ExtensionMethods` typing.
|
|
270
|
+
*
|
|
271
|
+
* tsbindgen emits extension methods as interface members on `__Ext_*` types, and users
|
|
272
|
+
* opt in via `ExtensionMethods<TShape>`. At runtime those members do not exist, so we
|
|
273
|
+
* must attach the underlying CLR binding so the emitter can lower the call to an
|
|
274
|
+
* explicit static invocation.
|
|
275
|
+
*/
|
|
276
|
+
export const resolveExtensionMethodsBinding = (node, propertyName, ctx) => {
|
|
277
|
+
const memberId = ctx.binding.resolvePropertyAccess(node);
|
|
278
|
+
if (!memberId)
|
|
279
|
+
return undefined;
|
|
280
|
+
const declaringTypeName = ctx.binding.getDeclaringTypeNameOfMember(memberId);
|
|
281
|
+
if (!declaringTypeName)
|
|
282
|
+
return undefined;
|
|
283
|
+
const callArgumentCount = (() => {
|
|
284
|
+
const parent = node.parent;
|
|
285
|
+
if (ts.isCallExpression(parent) && parent.expression === node) {
|
|
286
|
+
return parent.arguments.length;
|
|
287
|
+
}
|
|
288
|
+
return undefined;
|
|
289
|
+
})();
|
|
290
|
+
// Debug/diagnostic context for airplane-grade failures.
|
|
291
|
+
// These are populated during resolution and surfaced only if resolution fails.
|
|
292
|
+
let sigDeclaringTypeNameForError;
|
|
293
|
+
let namespaceKeyForError;
|
|
294
|
+
let receiverTypeNameForError;
|
|
295
|
+
const resolved = (() => {
|
|
296
|
+
const parent = node.parent;
|
|
297
|
+
if (!ts.isCallExpression(parent) || parent.expression !== node)
|
|
298
|
+
return undefined;
|
|
299
|
+
const sigId = ctx.binding.resolveCallSignature(parent);
|
|
300
|
+
if (!sigId)
|
|
301
|
+
return undefined;
|
|
302
|
+
// IMPORTANT (airplane-grade): the same TS member name can exist in multiple extension
|
|
303
|
+
// namespaces (e.g., BCL async LINQ and EF Core both define ToArrayAsync). When the
|
|
304
|
+
// receiver expression is not an identifier, `resolvePropertyAccess` can key the member
|
|
305
|
+
// entry off the member symbol itself, which merges declarations. Always anchor to the
|
|
306
|
+
// resolved signature's declaring type to choose the correct CLR extension binding.
|
|
307
|
+
const sigDeclaringTypeName = ctx.binding.getDeclaringTypeNameOfSignature(sigId);
|
|
308
|
+
sigDeclaringTypeNameForError = sigDeclaringTypeName;
|
|
309
|
+
if (!sigDeclaringTypeName)
|
|
310
|
+
return undefined;
|
|
311
|
+
// Extension method bucket format: methods emitted on `__Ext_*` interfaces.
|
|
312
|
+
if (sigDeclaringTypeName.startsWith("__Ext_")) {
|
|
313
|
+
return ctx.bindings.resolveExtensionMethod(sigDeclaringTypeName, propertyName, callArgumentCount);
|
|
314
|
+
}
|
|
315
|
+
// New format: extension methods emitted on method-table interfaces:
|
|
316
|
+
// interface __TsonicExtMethods_System_Linq { Where(this: IQueryable_1<T>, ...): ... }
|
|
317
|
+
if (sigDeclaringTypeName.startsWith("__TsonicExtMethods_")) {
|
|
318
|
+
const namespaceKey = sigDeclaringTypeName.slice("__TsonicExtMethods_".length);
|
|
319
|
+
namespaceKeyForError = namespaceKey;
|
|
320
|
+
if (!namespaceKey)
|
|
321
|
+
return undefined;
|
|
322
|
+
const thisTypeNode = ctx.binding.getThisTypeNodeOfSignature(sigId);
|
|
323
|
+
if (!thisTypeNode)
|
|
324
|
+
return undefined;
|
|
325
|
+
const extractReceiverTypeName = (typeNode) => {
|
|
326
|
+
let current = typeNode;
|
|
327
|
+
while (ts.isParenthesizedTypeNode(current))
|
|
328
|
+
current = current.type;
|
|
329
|
+
if (ts.isTypeReferenceNode(current)) {
|
|
330
|
+
const tn = current.typeName;
|
|
331
|
+
if (ts.isIdentifier(tn))
|
|
332
|
+
return tn.text;
|
|
333
|
+
if (ts.isQualifiedName(tn))
|
|
334
|
+
return tn.right.text;
|
|
335
|
+
}
|
|
336
|
+
return undefined;
|
|
337
|
+
};
|
|
338
|
+
const receiverTypeName = extractReceiverTypeName(thisTypeNode);
|
|
339
|
+
receiverTypeNameForError = receiverTypeName;
|
|
340
|
+
if (!receiverTypeName)
|
|
341
|
+
return undefined;
|
|
342
|
+
return ctx.bindings.resolveExtensionMethodByKey(namespaceKey, receiverTypeName, propertyName, callArgumentCount);
|
|
343
|
+
}
|
|
344
|
+
return undefined;
|
|
345
|
+
})();
|
|
346
|
+
if (!resolved) {
|
|
347
|
+
// Airplane-grade: if the TS surface indicates this member comes from an extension-method
|
|
348
|
+
// module, failing to attach a CLR binding would emit an instance call that cannot exist
|
|
349
|
+
// at runtime. Treat as a hard error rather than miscompiling.
|
|
350
|
+
if (declaringTypeName.startsWith("__Ext_") ||
|
|
351
|
+
declaringTypeName.startsWith("__TsonicExtMethods_")) {
|
|
352
|
+
const detail = [
|
|
353
|
+
sigDeclaringTypeNameForError
|
|
354
|
+
? `Resolved signature declares: '${sigDeclaringTypeNameForError}'.`
|
|
355
|
+
: "Resolved signature declaring type: <unknown>.",
|
|
356
|
+
namespaceKeyForError
|
|
357
|
+
? `Namespace key: '${namespaceKeyForError}'.`
|
|
358
|
+
: "Namespace key: <unknown>.",
|
|
359
|
+
receiverTypeNameForError
|
|
360
|
+
? `Receiver type: '${receiverTypeNameForError}'.`
|
|
361
|
+
: "Receiver type: <unknown>.",
|
|
362
|
+
].join(" ");
|
|
363
|
+
ctx.diagnostics.push(createDiagnostic("TSN4004", "error", `Failed to resolve CLR extension-method binding for '${propertyName}' on '${declaringTypeName}'. ${detail}`, getSourceSpan(node), "This indicates a mismatch between the generated .d.ts surface and bindings.json extension metadata. Regenerate bindings and ensure the correct packages are installed."));
|
|
364
|
+
}
|
|
365
|
+
return undefined;
|
|
366
|
+
}
|
|
367
|
+
// tsbindgen parameterModifiers indices include the extension receiver at index 0.
|
|
368
|
+
// For instance-style calls, our call-site arguments exclude the receiver, so shift by -1.
|
|
369
|
+
const shiftedModifiers = resolved.parameterModifiers
|
|
370
|
+
? resolved.parameterModifiers
|
|
371
|
+
.map((m) => ({ index: m.index - 1, modifier: m.modifier }))
|
|
372
|
+
.filter((m) => m.index >= 0)
|
|
373
|
+
: undefined;
|
|
374
|
+
return {
|
|
375
|
+
assembly: resolved.binding.assembly,
|
|
376
|
+
type: resolved.binding.type,
|
|
377
|
+
member: resolved.binding.member,
|
|
378
|
+
parameterModifiers: shiftedModifiers && shiftedModifiers.length > 0
|
|
379
|
+
? shiftedModifiers
|
|
380
|
+
: undefined,
|
|
381
|
+
isExtensionMethod: resolved.isExtensionMethod,
|
|
382
|
+
};
|
|
383
|
+
};
|
|
384
|
+
//# sourceMappingURL=binding-resolution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"binding-resolution.js","sourceRoot":"","sources":["../../../../../src/ir/converters/expressions/access/binding-resolution.ts"],"names":[],"mappings":"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"}
|