@tsonic/emitter 0.0.76 → 0.0.77
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/array.test.js +3 -3
- package/dist/array.test.js.map +1 -1
- package/dist/core/format/backend-ast/invariants.test.js +5 -0
- package/dist/core/format/backend-ast/invariants.test.js.map +1 -1
- package/dist/core/format/backend-ast/printer-colon-detection.d.ts.map +1 -1
- package/dist/core/format/backend-ast/printer-colon-detection.js +2 -0
- package/dist/core/format/backend-ast/printer-colon-detection.js.map +1 -1
- package/dist/core/format/backend-ast/printer-expressions.d.ts.map +1 -1
- package/dist/core/format/backend-ast/printer-expressions.js +4 -0
- package/dist/core/format/backend-ast/printer-expressions.js.map +1 -1
- package/dist/core/format/backend-ast/printer-precedence.d.ts.map +1 -1
- package/dist/core/format/backend-ast/printer-precedence.js +1 -0
- package/dist/core/format/backend-ast/printer-precedence.js.map +1 -1
- package/dist/core/format/backend-ast/types/expression-ast.d.ts +5 -1
- package/dist/core/format/backend-ast/types/expression-ast.d.ts.map +1 -1
- package/dist/core/format/backend-ast/utils.d.ts +3 -0
- package/dist/core/format/backend-ast/utils.d.ts.map +1 -1
- package/dist/core/format/backend-ast/utils.js +39 -0
- package/dist/core/format/backend-ast/utils.js.map +1 -1
- package/dist/core/format/backend-ast/utils.test.js +13 -1
- package/dist/core/format/backend-ast/utils.test.js.map +1 -1
- package/dist/core/format/local-names.d.ts.map +1 -1
- package/dist/core/format/local-names.js +3 -2
- package/dist/core/format/local-names.js.map +1 -1
- package/dist/core/format/local-names.test.js +7 -6
- package/dist/core/format/local-names.test.js.map +1 -1
- package/dist/core/format/module-emitter/orchestrator.d.ts.map +1 -1
- package/dist/core/format/module-emitter/orchestrator.js +3 -1
- package/dist/core/format/module-emitter/orchestrator.js.map +1 -1
- package/dist/core/format/module-emitter/static-container.d.ts.map +1 -1
- package/dist/core/format/module-emitter/static-container.js +2 -4
- package/dist/core/format/module-emitter/static-container.js.map +1 -1
- package/dist/core/module-emitter-cases/class-and-recursion.test.js +4 -1
- package/dist/core/module-emitter-cases/class-and-recursion.test.js.map +1 -1
- package/dist/core/module-emitter-cases/static-containers.test.js +111 -1
- package/dist/core/module-emitter-cases/static-containers.test.js.map +1 -1
- package/dist/core/semantic/adapt-result.d.ts +20 -0
- package/dist/core/semantic/adapt-result.d.ts.map +1 -0
- package/dist/core/semantic/adapt-result.js +30 -0
- package/dist/core/semantic/adapt-result.js.map +1 -0
- package/dist/core/semantic/array-expected-types.d.ts.map +1 -1
- package/dist/core/semantic/array-expected-types.js.map +1 -1
- package/dist/core/semantic/assignment-flow.d.ts.map +1 -1
- package/dist/core/semantic/assignment-flow.js +26 -3
- package/dist/core/semantic/assignment-flow.js.map +1 -1
- package/dist/core/semantic/async-wrapper-types.d.ts +1 -0
- package/dist/core/semantic/async-wrapper-types.d.ts.map +1 -1
- package/dist/core/semantic/async-wrapper-types.js +19 -1
- package/dist/core/semantic/async-wrapper-types.js.map +1 -1
- package/dist/core/semantic/boolean-condition-main.d.ts.map +1 -1
- package/dist/core/semantic/boolean-condition-main.js +6 -2
- package/dist/core/semantic/boolean-condition-main.js.map +1 -1
- package/dist/core/semantic/boolean-context.test.js +2 -1
- package/dist/core/semantic/boolean-context.test.js.map +1 -1
- package/dist/core/semantic/broad-array-storage.d.ts.map +1 -1
- package/dist/core/semantic/broad-array-storage.js +2 -5
- package/dist/core/semantic/broad-array-storage.js.map +1 -1
- package/dist/core/semantic/broad-object-types.d.ts +1 -0
- package/dist/core/semantic/broad-object-types.d.ts.map +1 -1
- package/dist/core/semantic/broad-object-types.js +39 -0
- package/dist/core/semantic/broad-object-types.js.map +1 -1
- package/dist/core/semantic/clr-type-identity.d.ts +1 -2
- package/dist/core/semantic/clr-type-identity.d.ts.map +1 -1
- package/dist/core/semantic/clr-type-identity.js +3 -65
- package/dist/core/semantic/clr-type-identity.js.map +1 -1
- package/dist/core/semantic/comparable-types.d.ts.map +1 -1
- package/dist/core/semantic/comparable-types.js +61 -27
- package/dist/core/semantic/comparable-types.js.map +1 -1
- package/dist/core/semantic/comparable-types.test.js.map +1 -1
- package/dist/core/semantic/deterministic-type-keys.d.ts.map +1 -1
- package/dist/core/semantic/deterministic-type-keys.js +90 -37
- package/dist/core/semantic/deterministic-type-keys.js.map +1 -1
- package/dist/core/semantic/deterministic-type-keys.test.d.ts +2 -0
- package/dist/core/semantic/deterministic-type-keys.test.d.ts.map +1 -0
- package/dist/core/semantic/deterministic-type-keys.test.js +38 -0
- package/dist/core/semantic/deterministic-type-keys.test.js.map +1 -0
- package/dist/core/semantic/direct-storage-ir-types.d.ts +1 -1
- package/dist/core/semantic/direct-storage-ir-types.d.ts.map +1 -1
- package/dist/core/semantic/direct-storage-ir-types.js +12 -3
- package/dist/core/semantic/direct-storage-ir-types.js.map +1 -1
- package/dist/core/semantic/direct-value-surfaces.d.ts.map +1 -1
- package/dist/core/semantic/direct-value-surfaces.js +165 -6
- package/dist/core/semantic/direct-value-surfaces.js.map +1 -1
- package/dist/core/semantic/direct-value-surfaces.test.js +69 -6
- package/dist/core/semantic/direct-value-surfaces.test.js.map +1 -1
- package/dist/core/semantic/expected-type-matching.d.ts.map +1 -1
- package/dist/core/semantic/expected-type-matching.js +4 -5
- package/dist/core/semantic/expected-type-matching.js.map +1 -1
- package/dist/core/semantic/implicit-interfaces.d.ts.map +1 -1
- package/dist/core/semantic/implicit-interfaces.js.map +1 -1
- package/dist/core/semantic/imports-cases/basic-and-local.test.js +8 -8
- package/dist/core/semantic/imports-cases/basic-and-local.test.js.map +1 -1
- package/dist/core/semantic/imports.js +3 -2
- package/dist/core/semantic/imports.js.map +1 -1
- package/dist/core/semantic/index.d.ts +1 -1
- package/dist/core/semantic/index.d.ts.map +1 -1
- package/dist/core/semantic/index.js +1 -1
- package/dist/core/semantic/index.js.map +1 -1
- package/dist/core/semantic/instanceof-predicate-refinements.d.ts.map +1 -1
- package/dist/core/semantic/instanceof-predicate-refinements.js +1 -9
- package/dist/core/semantic/instanceof-predicate-refinements.js.map +1 -1
- package/dist/core/semantic/js-array-surface-members.d.ts +4 -0
- package/dist/core/semantic/js-array-surface-members.d.ts.map +1 -0
- package/dist/core/semantic/js-array-surface-members.js +32 -0
- package/dist/core/semantic/js-array-surface-members.js.map +1 -0
- package/dist/core/semantic/materialized-narrowing.d.ts +1 -0
- package/dist/core/semantic/materialized-narrowing.d.ts.map +1 -1
- package/dist/core/semantic/materialized-narrowing.js +170 -34
- package/dist/core/semantic/materialized-narrowing.js.map +1 -1
- package/dist/core/semantic/materialized-narrowing.test.js +24 -6
- package/dist/core/semantic/materialized-narrowing.test.js.map +1 -1
- package/dist/core/semantic/module-map.d.ts.map +1 -1
- package/dist/core/semantic/module-map.js +4 -6
- package/dist/core/semantic/module-map.js.map +1 -1
- package/dist/core/semantic/module-type-collisions.d.ts +7 -0
- package/dist/core/semantic/module-type-collisions.d.ts.map +1 -0
- package/dist/core/semantic/module-type-collisions.js +24 -0
- package/dist/core/semantic/module-type-collisions.js.map +1 -0
- package/dist/core/semantic/mutable-storage-helpers.d.ts +1 -1
- package/dist/core/semantic/mutable-storage-helpers.d.ts.map +1 -1
- package/dist/core/semantic/mutable-storage-helpers.js +4 -12
- package/dist/core/semantic/mutable-storage-helpers.js.map +1 -1
- package/dist/core/semantic/naming-collisions.d.ts.map +1 -1
- package/dist/core/semantic/naming-collisions.js +13 -3
- package/dist/core/semantic/naming-collisions.js.map +1 -1
- package/dist/core/semantic/narrowed-expression-types.d.ts +3 -1
- package/dist/core/semantic/narrowed-expression-types.d.ts.map +1 -1
- package/dist/core/semantic/narrowed-expression-types.js +138 -16
- package/dist/core/semantic/narrowed-expression-types.js.map +1 -1
- package/dist/core/semantic/narrowed-union-resolution.d.ts.map +1 -1
- package/dist/core/semantic/narrowed-union-resolution.js +13 -2
- package/dist/core/semantic/narrowed-union-resolution.js.map +1 -1
- package/dist/core/semantic/narrowing-builder-core.d.ts +3 -2
- package/dist/core/semantic/narrowing-builder-core.d.ts.map +1 -1
- package/dist/core/semantic/narrowing-builder-core.js +85 -126
- package/dist/core/semantic/narrowing-builder-core.js.map +1 -1
- package/dist/core/semantic/narrowing-builder-core.test.js +3 -2
- package/dist/core/semantic/narrowing-builder-core.test.js.map +1 -1
- package/dist/core/semantic/narrowing-builder-unions.d.ts.map +1 -1
- package/dist/core/semantic/narrowing-builder-unions.js +43 -7
- package/dist/core/semantic/narrowing-builder-unions.js.map +1 -1
- package/dist/core/semantic/narrowing-builders.d.ts +1 -1
- package/dist/core/semantic/narrowing-builders.d.ts.map +1 -1
- package/dist/core/semantic/narrowing-builders.js +1 -1
- package/dist/core/semantic/narrowing-builders.js.map +1 -1
- package/dist/core/semantic/narrowing-refinements.d.ts +1 -1
- package/dist/core/semantic/narrowing-refinements.d.ts.map +1 -1
- package/dist/core/semantic/narrowing-refinements.js +1 -1
- package/dist/core/semantic/narrowing-refinements.js.map +1 -1
- package/dist/core/semantic/nullable-typeof-refinements.d.ts +1 -5
- package/dist/core/semantic/nullable-typeof-refinements.d.ts.map +1 -1
- package/dist/core/semantic/nullable-typeof-refinements.js +128 -57
- package/dist/core/semantic/nullable-typeof-refinements.js.map +1 -1
- package/dist/core/semantic/nullish-value-helpers.d.ts +1 -1
- package/dist/core/semantic/nullish-value-helpers.d.ts.map +1 -1
- package/dist/core/semantic/nullish-value-helpers.js +18 -9
- package/dist/core/semantic/nullish-value-helpers.js.map +1 -1
- package/dist/core/semantic/runtime-materialization-targets.js +1 -1
- package/dist/core/semantic/runtime-materialization-targets.js.map +1 -1
- package/dist/core/semantic/runtime-reification.d.ts +1 -0
- package/dist/core/semantic/runtime-reification.d.ts.map +1 -1
- package/dist/core/semantic/runtime-reification.js +141 -35
- package/dist/core/semantic/runtime-reification.js.map +1 -1
- package/dist/core/semantic/runtime-union-family-preservation.js +1 -1
- package/dist/core/semantic/runtime-union-family-preservation.js.map +1 -1
- package/dist/core/semantic/runtime-union-matching.d.ts.map +1 -1
- package/dist/core/semantic/runtime-union-matching.js +13 -0
- package/dist/core/semantic/runtime-union-matching.js.map +1 -1
- package/dist/core/semantic/runtime-union-member-mapping.test.js +1 -1
- package/dist/core/semantic/runtime-union-member-mapping.test.js.map +1 -1
- package/dist/core/semantic/runtime-union-ordering.d.ts.map +1 -1
- package/dist/core/semantic/runtime-union-ordering.js +10 -22
- package/dist/core/semantic/runtime-union-ordering.js.map +1 -1
- package/dist/core/semantic/runtime-union-projection.d.ts.map +1 -1
- package/dist/core/semantic/runtime-union-projection.js +23 -7
- package/dist/core/semantic/runtime-union-projection.js.map +1 -1
- package/dist/core/semantic/runtime-union-projection.test.js +19 -1
- package/dist/core/semantic/runtime-union-projection.test.js.map +1 -1
- package/dist/core/semantic/runtime-union-registry.js +13 -13
- package/dist/core/semantic/runtime-union-registry.js.map +1 -1
- package/dist/core/semantic/runtime-unions.d.ts.map +1 -1
- package/dist/core/semantic/runtime-unions.js +47 -21
- package/dist/core/semantic/runtime-unions.js.map +1 -1
- package/dist/core/semantic/runtime-unions.test.js +12 -7
- package/dist/core/semantic/runtime-unions.test.js.map +1 -1
- package/dist/core/semantic/semantic-union-members.d.ts.map +1 -1
- package/dist/core/semantic/semantic-union-members.js.map +1 -1
- package/dist/core/semantic/storage-erased-adaptation.d.ts.map +1 -1
- package/dist/core/semantic/storage-erased-adaptation.js +8 -11
- package/dist/core/semantic/storage-erased-adaptation.js.map +1 -1
- package/dist/core/semantic/storage-erased-adaptation.test.js +4 -1
- package/dist/core/semantic/storage-erased-adaptation.test.js.map +1 -1
- package/dist/core/semantic/storage-types.d.ts.map +1 -1
- package/dist/core/semantic/storage-types.js +4 -2
- package/dist/core/semantic/storage-types.js.map +1 -1
- package/dist/core/semantic/structural-shape-matching.d.ts +5 -1
- package/dist/core/semantic/structural-shape-matching.d.ts.map +1 -1
- package/dist/core/semantic/structural-shape-matching.js +29 -4
- package/dist/core/semantic/structural-shape-matching.js.map +1 -1
- package/dist/core/semantic/symbol-types.d.ts +2 -9
- package/dist/core/semantic/symbol-types.d.ts.map +1 -1
- package/dist/core/semantic/symbol-types.js +7 -11
- package/dist/core/semantic/symbol-types.js.map +1 -1
- package/dist/core/semantic/truthiness-evaluation.d.ts.map +1 -1
- package/dist/core/semantic/truthiness-evaluation.js +3 -3
- package/dist/core/semantic/truthiness-evaluation.js.map +1 -1
- package/dist/core/semantic/type-compatibility.d.ts +4 -2
- package/dist/core/semantic/type-compatibility.d.ts.map +1 -1
- package/dist/core/semantic/type-compatibility.js +62 -2
- package/dist/core/semantic/type-compatibility.js.map +1 -1
- package/dist/core/semantic/type-domains.d.ts +17 -0
- package/dist/core/semantic/type-domains.d.ts.map +1 -0
- package/dist/core/semantic/type-domains.js +7 -0
- package/dist/core/semantic/type-domains.js.map +1 -0
- package/dist/core/semantic/type-equivalence.d.ts.map +1 -1
- package/dist/core/semantic/type-equivalence.js +12 -7
- package/dist/core/semantic/type-equivalence.js.map +1 -1
- package/dist/core/semantic/type-equivalence.test.js +34 -0
- package/dist/core/semantic/type-equivalence.test.js.map +1 -1
- package/dist/core/semantic/type-resolution-cases/array-like-element.test.js +13 -4
- package/dist/core/semantic/type-resolution-cases/array-like-element.test.js.map +1 -1
- package/dist/core/semantic/type-resolution-cases/helpers.d.ts +2 -2
- package/dist/core/semantic/type-resolution-cases/helpers.d.ts.map +1 -1
- package/dist/core/semantic/type-resolution-cases/helpers.js +2 -2
- package/dist/core/semantic/type-resolution-cases/helpers.js.map +1 -1
- package/dist/core/semantic/type-resolution-cases/typeof-narrowing.test.d.ts +2 -0
- package/dist/core/semantic/type-resolution-cases/typeof-narrowing.test.d.ts.map +1 -0
- package/dist/core/semantic/type-resolution-cases/typeof-narrowing.test.js +36 -0
- package/dist/core/semantic/type-resolution-cases/typeof-narrowing.test.js.map +1 -0
- package/dist/core/semantic/type-resolution.test.d.ts +1 -1
- package/dist/core/semantic/type-resolution.test.d.ts.map +1 -1
- package/dist/core/semantic/type-resolution.test.js +1 -1
- package/dist/core/semantic/type-resolution.test.js.map +1 -1
- package/dist/core/semantic/type-substitution.d.ts.map +1 -1
- package/dist/core/semantic/type-substitution.js +2 -1
- package/dist/core/semantic/type-substitution.js.map +1 -1
- package/dist/core/semantic/union-predicate-matching.d.ts.map +1 -1
- package/dist/core/semantic/union-predicate-matching.js +1 -1
- package/dist/core/semantic/union-predicate-matching.js.map +1 -1
- package/dist/core/semantic/union-typeof-matching.d.ts.map +1 -1
- package/dist/core/semantic/union-typeof-matching.js +72 -22
- package/dist/core/semantic/union-typeof-matching.js.map +1 -1
- package/dist/core/semantic/variable-type-resolution.d.ts +1 -0
- package/dist/core/semantic/variable-type-resolution.d.ts.map +1 -1
- package/dist/core/semantic/variable-type-resolution.js +62 -6
- package/dist/core/semantic/variable-type-resolution.js.map +1 -1
- package/dist/duplicate-type-suppression.d.ts.map +1 -1
- package/dist/duplicate-type-suppression.js.map +1 -1
- package/dist/emitter-types/context.d.ts +1 -0
- package/dist/emitter-types/context.d.ts.map +1 -1
- package/dist/emitter-types/context.js +12 -1
- package/dist/emitter-types/context.js.map +1 -1
- package/dist/emitter-types/core.d.ts +10 -9
- package/dist/emitter-types/core.d.ts.map +1 -1
- package/dist/emitter-types/fqn.d.ts +0 -1
- package/dist/emitter-types/fqn.d.ts.map +1 -1
- package/dist/emitter-types/fqn.js +0 -1
- package/dist/emitter-types/fqn.js.map +1 -1
- package/dist/emitter-types/index.d.ts +1 -1
- package/dist/emitter-types/index.d.ts.map +1 -1
- package/dist/emitter-types/index.js +1 -1
- package/dist/emitter-types/index.js.map +1 -1
- package/dist/emitter.d.ts +3 -3
- package/dist/emitter.d.ts.map +1 -1
- package/dist/emitter.js +1 -7
- package/dist/emitter.js.map +1 -1
- package/dist/expression-emitter.d.ts.map +1 -1
- package/dist/expression-emitter.js +7 -2
- package/dist/expression-emitter.js.map +1 -1
- package/dist/expressions/access-binding.d.ts.map +1 -1
- package/dist/expressions/access-binding.js +32 -46
- package/dist/expressions/access-binding.js.map +1 -1
- package/dist/expressions/access-computed.d.ts.map +1 -1
- package/dist/expressions/access-computed.js +7 -8
- package/dist/expressions/access-computed.js.map +1 -1
- package/dist/expressions/access-length.d.ts +5 -9
- package/dist/expressions/access-length.d.ts.map +1 -1
- package/dist/expressions/access-length.js +17 -225
- package/dist/expressions/access-length.js.map +1 -1
- package/dist/expressions/access-property.d.ts +1 -2
- package/dist/expressions/access-property.d.ts.map +1 -1
- package/dist/expressions/access-property.js +20 -94
- package/dist/expressions/access-property.js.map +1 -1
- package/dist/expressions/access-resolution-receivers.d.ts.map +1 -1
- package/dist/expressions/access-resolution-receivers.js +14 -5
- package/dist/expressions/access-resolution-receivers.js.map +1 -1
- package/dist/expressions/access-resolution-types.d.ts.map +1 -1
- package/dist/expressions/access-resolution-types.js +7 -0
- package/dist/expressions/access-resolution-types.js.map +1 -1
- package/dist/expressions/access.d.ts +2 -2
- package/dist/expressions/access.d.ts.map +1 -1
- package/dist/expressions/access.js +6 -5
- package/dist/expressions/access.js.map +1 -1
- package/dist/expressions/architecture-invariants.test.js +18 -0
- package/dist/expressions/architecture-invariants.test.js.map +1 -1
- package/dist/expressions/await-normalization.d.ts.map +1 -1
- package/dist/expressions/await-normalization.js +53 -13
- package/dist/expressions/await-normalization.js.map +1 -1
- package/dist/expressions/calls/call-analysis.d.ts +0 -1
- package/dist/expressions/calls/call-analysis.d.ts.map +1 -1
- package/dist/expressions/calls/call-analysis.js +0 -7
- package/dist/expressions/calls/call-analysis.js.map +1 -1
- package/dist/expressions/calls/call-arguments-emit.d.ts.map +1 -1
- package/dist/expressions/calls/call-arguments-emit.js +219 -36
- package/dist/expressions/calls/call-arguments-emit.js.map +1 -1
- package/dist/expressions/calls/call-arguments-helpers.d.ts.map +1 -1
- package/dist/expressions/calls/call-arguments-helpers.js.map +1 -1
- package/dist/expressions/calls/call-array-mutation.d.ts.map +1 -1
- package/dist/expressions/calls/call-array-mutation.js +8 -33
- package/dist/expressions/calls/call-array-mutation.js.map +1 -1
- package/dist/expressions/calls/call-array-wrapper.d.ts.map +1 -1
- package/dist/expressions/calls/call-array-wrapper.js +6 -4
- package/dist/expressions/calls/call-array-wrapper.js.map +1 -1
- package/dist/expressions/calls/call-emitter.d.ts +1 -1
- package/dist/expressions/calls/call-emitter.d.ts.map +1 -1
- package/dist/expressions/calls/call-emitter.js +85 -7
- package/dist/expressions/calls/call-emitter.js.map +1 -1
- package/dist/expressions/calls/call-json.d.ts +1 -1
- package/dist/expressions/calls/call-json.d.ts.map +1 -1
- package/dist/expressions/calls/call-json.js +50 -84
- package/dist/expressions/calls/call-json.js.map +1 -1
- package/dist/expressions/calls/call-promise-ir-types.d.ts.map +1 -1
- package/dist/expressions/calls/call-promise-ir-types.js.map +1 -1
- package/dist/expressions/calls/call-runtime-union-guards.d.ts.map +1 -1
- package/dist/expressions/calls/call-runtime-union-guards.js +10 -1
- package/dist/expressions/calls/call-runtime-union-guards.js.map +1 -1
- package/dist/expressions/calls/new-emitter-collections.d.ts +7 -4
- package/dist/expressions/calls/new-emitter-collections.d.ts.map +1 -1
- package/dist/expressions/calls/new-emitter-collections.js +64 -25
- package/dist/expressions/calls/new-emitter-collections.js.map +1 -1
- package/dist/expressions/calls/new-emitter.d.ts.map +1 -1
- package/dist/expressions/calls/new-emitter.js +4 -5
- package/dist/expressions/calls/new-emitter.js.map +1 -1
- package/dist/expressions/direct-storage-types.d.ts.map +1 -1
- package/dist/expressions/direct-storage-types.js +76 -15
- package/dist/expressions/direct-storage-types.js.map +1 -1
- package/dist/expressions/exact-comparison.d.ts.map +1 -1
- package/dist/expressions/exact-comparison.js +3 -1
- package/dist/expressions/exact-comparison.js.map +1 -1
- package/dist/expressions/expected-type-adaptation.d.ts +1 -1
- package/dist/expressions/expected-type-adaptation.d.ts.map +1 -1
- package/dist/expressions/expected-type-adaptation.js +149 -29
- package/dist/expressions/expected-type-adaptation.js.map +1 -1
- package/dist/expressions/expected-type-adaptation.test.js +81 -26
- package/dist/expressions/expected-type-adaptation.test.js.map +1 -1
- package/dist/expressions/identifier-storage.d.ts +5 -0
- package/dist/expressions/identifier-storage.d.ts.map +1 -1
- package/dist/expressions/identifier-storage.js +200 -25
- package/dist/expressions/identifier-storage.js.map +1 -1
- package/dist/expressions/identifiers.d.ts.map +1 -1
- package/dist/expressions/identifiers.js +7 -16
- package/dist/expressions/identifiers.js.map +1 -1
- package/dist/expressions/index-cases/array-wrapper-recursion-b.test.js +3 -3
- package/dist/expressions/index-cases/array-wrapper-recursion-b.test.js.map +1 -1
- package/dist/expressions/index-cases/basic-literals-and-calls.test.js +3 -3
- package/dist/expressions/index-cases/basic-literals-and-calls.test.js.map +1 -1
- package/dist/expressions/index-cases/defaults-and-char-context.test.js +8 -2
- package/dist/expressions/index-cases/defaults-and-char-context.test.js.map +1 -1
- package/dist/expressions/index-cases/dictionary-and-object-initializers-a.test.js +17 -20
- package/dist/expressions/index-cases/dictionary-and-object-initializers-a.test.js.map +1 -1
- package/dist/expressions/index-cases/dictionary-and-object-initializers-b.test.js +7 -8
- package/dist/expressions/index-cases/dictionary-and-object-initializers-b.test.js.map +1 -1
- package/dist/expressions/index-cases/helpers.d.ts +5 -4
- package/dist/expressions/index-cases/helpers.d.ts.map +1 -1
- package/dist/expressions/index-cases/helpers.js +3 -2
- package/dist/expressions/index-cases/helpers.js.map +1 -1
- package/dist/expressions/index-cases/nullable-and-comparisons.test.js +9 -9
- package/dist/expressions/index-cases/nullable-and-comparisons.test.js.map +1 -1
- package/dist/expressions/index-cases/runtime-subset-and-assertions.test.js +3 -3
- package/dist/expressions/index-cases/runtime-subset-and-assertions.test.js.map +1 -1
- package/dist/expressions/index-cases/runtime-union-reification-b.test.js +19 -13
- package/dist/expressions/index-cases/runtime-union-reification-b.test.js.map +1 -1
- package/dist/expressions/index-cases/string-and-array-fallbacks-a.test.js +4 -4
- package/dist/expressions/index-cases/string-and-array-fallbacks-a.test.js.map +1 -1
- package/dist/expressions/lambda-parameters.d.ts.map +1 -1
- package/dist/expressions/lambda-parameters.js +97 -12
- package/dist/expressions/lambda-parameters.js.map +1 -1
- package/dist/expressions/object-literal.d.ts.map +1 -1
- package/dist/expressions/object-literal.js +48 -18
- package/dist/expressions/object-literal.js.map +1 -1
- package/dist/expressions/operators/binary-dispatch.d.ts +1 -1
- package/dist/expressions/operators/binary-dispatch.d.ts.map +1 -1
- package/dist/expressions/operators/binary-dispatch.js +52 -12
- package/dist/expressions/operators/binary-dispatch.js.map +1 -1
- package/dist/expressions/operators/binary-helpers.d.ts.map +1 -1
- package/dist/expressions/operators/binary-helpers.js +11 -1
- package/dist/expressions/operators/binary-helpers.js.map +1 -1
- package/dist/expressions/operators/binary-special-ops.d.ts +1 -11
- package/dist/expressions/operators/binary-special-ops.d.ts.map +1 -1
- package/dist/expressions/operators/binary-special-ops.js +217 -195
- package/dist/expressions/operators/binary-special-ops.js.map +1 -1
- package/dist/expressions/operators/conditional-emitter.d.ts.map +1 -1
- package/dist/expressions/operators/conditional-emitter.js +89 -19
- package/dist/expressions/operators/conditional-emitter.js.map +1 -1
- package/dist/expressions/operators/logical-emitter.js +1 -1
- package/dist/expressions/operators/logical-emitter.js.map +1 -1
- package/dist/expressions/operators/unary-emitter.d.ts.map +1 -1
- package/dist/expressions/operators/unary-emitter.js +7 -50
- package/dist/expressions/operators/unary-emitter.js.map +1 -1
- package/dist/expressions/other.d.ts +2 -6
- package/dist/expressions/other.d.ts.map +1 -1
- package/dist/expressions/other.js +6 -13
- package/dist/expressions/other.js.map +1 -1
- package/dist/expressions/post-emission-adaptation.d.ts +1 -1
- package/dist/expressions/post-emission-adaptation.d.ts.map +1 -1
- package/dist/expressions/post-emission-adaptation.js +55 -150
- package/dist/expressions/post-emission-adaptation.js.map +1 -1
- package/dist/expressions/precedence.test.js +5 -46
- package/dist/expressions/precedence.test.js.map +1 -1
- package/dist/expressions/runtime-union-adaptation-projection.d.ts.map +1 -1
- package/dist/expressions/runtime-union-adaptation-projection.js +25 -4
- package/dist/expressions/runtime-union-adaptation-projection.js.map +1 -1
- package/dist/expressions/runtime-union-adaptation-upcast.d.ts.map +1 -1
- package/dist/expressions/runtime-union-adaptation-upcast.js +268 -31
- package/dist/expressions/runtime-union-adaptation-upcast.js.map +1 -1
- package/dist/expressions/structural-anonymous-targets.d.ts.map +1 -1
- package/dist/expressions/structural-anonymous-targets.js +5 -0
- package/dist/expressions/structural-anonymous-targets.js.map +1 -1
- package/dist/expressions/structural-collection-adaptation.d.ts.map +1 -1
- package/dist/expressions/structural-collection-adaptation.js +4 -2
- package/dist/expressions/structural-collection-adaptation.js.map +1 -1
- package/dist/expressions/structural-object-adaptation.d.ts.map +1 -1
- package/dist/expressions/structural-object-adaptation.js +58 -3
- package/dist/expressions/structural-object-adaptation.js.map +1 -1
- package/dist/expressions/structural-property-model.d.ts.map +1 -1
- package/dist/expressions/structural-property-model.js +7 -3
- package/dist/expressions/structural-property-model.js.map +1 -1
- package/dist/expressions/structural-type-shapes.d.ts.map +1 -1
- package/dist/expressions/structural-type-shapes.js +1 -1
- package/dist/expressions/structural-type-shapes.js.map +1 -1
- package/dist/expressions/structural-type-shapes.test.js +2 -1
- package/dist/expressions/structural-type-shapes.test.js.map +1 -1
- package/dist/expressions/type-assertion-emitters.d.ts.map +1 -1
- package/dist/expressions/type-assertion-emitters.js +231 -15
- package/dist/expressions/type-assertion-emitters.js.map +1 -1
- package/dist/fixture-regression-mirrors.test.js +43 -112
- package/dist/fixture-regression-mirrors.test.js.map +1 -1
- package/dist/generated-files.d.ts +0 -1
- package/dist/generated-files.d.ts.map +1 -1
- package/dist/generated-files.js +0 -229
- package/dist/generated-files.js.map +1 -1
- package/dist/generated-files.test.js +53 -1
- package/dist/generated-files.test.js.map +1 -1
- package/dist/golden-tests/runner.d.ts.map +1 -1
- package/dist/golden-tests/runner.js +1 -0
- package/dist/golden-tests/runner.js.map +1 -1
- package/dist/integration-cases/arrow-and-generics-a.test.js +52 -32
- package/dist/integration-cases/arrow-and-generics-a.test.js.map +1 -1
- package/dist/integration-cases/arrow-and-generics-b.test.js +17 -23
- package/dist/integration-cases/arrow-and-generics-b.test.js.map +1 -1
- package/dist/integration-cases/await-and-intrinsics.test.js +12 -10
- package/dist/integration-cases/await-and-intrinsics.test.js.map +1 -1
- package/dist/integration-cases/clr-iterable-overloads.test.js +58 -27
- package/dist/integration-cases/clr-iterable-overloads.test.js.map +1 -1
- package/dist/integration-cases/full-module-and-promises.test.js +21 -19
- package/dist/integration-cases/full-module-and-promises.test.js.map +1 -1
- package/dist/integration-cases/helpers.d.ts.map +1 -1
- package/dist/integration-cases/helpers.js +12 -33
- package/dist/integration-cases/helpers.js.map +1 -1
- package/dist/integration-cases/may14-downstream-contracts.test.d.ts +2 -0
- package/dist/integration-cases/may14-downstream-contracts.test.d.ts.map +1 -0
- package/dist/integration-cases/may14-downstream-contracts.test.js +522 -0
- package/dist/integration-cases/may14-downstream-contracts.test.js.map +1 -0
- package/dist/integration-cases/object-literals-and-channels.test.js +10 -4
- package/dist/integration-cases/object-literals-and-channels.test.js.map +1 -1
- package/dist/integration-cases/regression-coverage-a.test.js +36 -30
- package/dist/integration-cases/regression-coverage-a.test.js.map +1 -1
- package/dist/integration-cases/regression-coverage-b.test.js +95 -111
- package/dist/integration-cases/regression-coverage-b.test.js.map +1 -1
- package/dist/integration-cases/regression-coverage-c.test.js +499 -197
- package/dist/integration-cases/regression-coverage-c.test.js.map +1 -1
- package/dist/integration.test.d.ts +1 -0
- package/dist/integration.test.d.ts.map +1 -1
- package/dist/integration.test.js +1 -0
- package/dist/integration.test.js.map +1 -1
- package/dist/json-aot-generic.test.js +48 -200
- package/dist/json-aot-generic.test.js.map +1 -1
- package/dist/statements/block-emitters/block-and-return.d.ts +1 -1
- package/dist/statements/block-emitters/block-and-return.d.ts.map +1 -1
- package/dist/statements/block-emitters/block-and-return.js +9 -3
- package/dist/statements/block-emitters/block-and-return.js.map +1 -1
- package/dist/statements/classes/properties.d.ts.map +1 -1
- package/dist/statements/classes/properties.js.map +1 -1
- package/dist/statements/control/conditionals/architecture-invariants.test.d.ts +2 -0
- package/dist/statements/control/conditionals/architecture-invariants.test.d.ts.map +1 -0
- package/dist/statements/control/conditionals/architecture-invariants.test.js +19 -0
- package/dist/statements/control/conditionals/architecture-invariants.test.js.map +1 -0
- package/dist/statements/control/conditionals/branch-context.d.ts +4 -6
- package/dist/statements/control/conditionals/branch-context.d.ts.map +1 -1
- package/dist/statements/control/conditionals/branch-context.js +104 -31
- package/dist/statements/control/conditionals/branch-context.js.map +1 -1
- package/dist/statements/control/conditionals/guard-analysis.d.ts +2 -2
- package/dist/statements/control/conditionals/guard-analysis.d.ts.map +1 -1
- package/dist/statements/control/conditionals/guard-analysis.js +1 -1
- package/dist/statements/control/conditionals/guard-analysis.js.map +1 -1
- package/dist/statements/control/conditionals/guard-detectors-discriminant.d.ts +2 -1
- package/dist/statements/control/conditionals/guard-detectors-discriminant.d.ts.map +1 -1
- package/dist/statements/control/conditionals/guard-detectors-discriminant.js +83 -1
- package/dist/statements/control/conditionals/guard-detectors-discriminant.js.map +1 -1
- package/dist/statements/control/conditionals/guard-detectors-structural.d.ts +2 -7
- package/dist/statements/control/conditionals/guard-detectors-structural.d.ts.map +1 -1
- package/dist/statements/control/conditionals/guard-detectors-structural.js +47 -82
- package/dist/statements/control/conditionals/guard-detectors-structural.js.map +1 -1
- package/dist/statements/control/conditionals/guard-detectors.d.ts +2 -2
- package/dist/statements/control/conditionals/guard-detectors.d.ts.map +1 -1
- package/dist/statements/control/conditionals/guard-detectors.js +2 -2
- package/dist/statements/control/conditionals/guard-detectors.js.map +1 -1
- package/dist/statements/control/conditionals/guard-extraction.d.ts +5 -7
- package/dist/statements/control/conditionals/guard-extraction.d.ts.map +1 -1
- package/dist/statements/control/conditionals/guard-extraction.js +3 -158
- package/dist/statements/control/conditionals/guard-extraction.js.map +1 -1
- package/dist/statements/control/conditionals/guard-types.d.ts +16 -26
- package/dist/statements/control/conditionals/guard-types.d.ts.map +1 -1
- package/dist/statements/control/conditionals/guard-types.js +23 -1
- package/dist/statements/control/conditionals/guard-types.js.map +1 -1
- package/dist/statements/control/conditionals/if-emit-instanceof-guards.d.ts.map +1 -1
- package/dist/statements/control/conditionals/if-emit-instanceof-guards.js +5 -8
- package/dist/statements/control/conditionals/if-emit-instanceof-guards.js.map +1 -1
- package/dist/statements/control/conditionals/if-emit-predicate-guards.d.ts +2 -8
- package/dist/statements/control/conditionals/if-emit-predicate-guards.d.ts.map +1 -1
- package/dist/statements/control/conditionals/if-emit-predicate-guards.js +4 -84
- package/dist/statements/control/conditionals/if-emit-predicate-guards.js.map +1 -1
- package/dist/statements/control/conditionals/if-emit-property-discriminant-guards.d.ts +2 -0
- package/dist/statements/control/conditionals/if-emit-property-discriminant-guards.d.ts.map +1 -1
- package/dist/statements/control/conditionals/if-emit-property-discriminant-guards.js +87 -3
- package/dist/statements/control/conditionals/if-emit-property-discriminant-guards.js.map +1 -1
- package/dist/statements/control/conditionals/if-emit-typeof-array-guards.d.ts.map +1 -1
- package/dist/statements/control/conditionals/if-emit-typeof-array-guards.js +254 -20
- package/dist/statements/control/conditionals/if-emit-typeof-array-guards.js.map +1 -1
- package/dist/statements/control/conditionals/if-emit-union-guards.d.ts +2 -2
- package/dist/statements/control/conditionals/if-emit-union-guards.d.ts.map +1 -1
- package/dist/statements/control/conditionals/if-emit-union-guards.js +2 -2
- package/dist/statements/control/conditionals/if-emit-union-guards.js.map +1 -1
- package/dist/statements/control/conditionals/if-emitter.d.ts.map +1 -1
- package/dist/statements/control/conditionals/if-emitter.js +36 -43
- package/dist/statements/control/conditionals/if-emitter.js.map +1 -1
- package/dist/statements/control/conditionals/ir-branch-narrowings.d.ts +5 -0
- package/dist/statements/control/conditionals/ir-branch-narrowings.d.ts.map +1 -0
- package/dist/statements/control/conditionals/ir-branch-narrowings.js +16 -0
- package/dist/statements/control/conditionals/ir-branch-narrowings.js.map +1 -0
- package/dist/statements/control/loops.d.ts +2 -9
- package/dist/statements/control/loops.d.ts.map +1 -1
- package/dist/statements/control/loops.js +56 -48
- package/dist/statements/control/loops.js.map +1 -1
- package/dist/statements/declarations/classes.d.ts.map +1 -1
- package/dist/statements/declarations/classes.js.map +1 -1
- package/dist/statements/declarations/interfaces.d.ts.map +1 -1
- package/dist/statements/declarations/interfaces.js.map +1 -1
- package/dist/statements/declarations/structs.test.js +5 -4
- package/dist/statements/declarations/structs.test.js.map +1 -1
- package/dist/statements/declarations/type-aliases.js.map +1 -1
- package/dist/statements/declarations/variables.d.ts.map +1 -1
- package/dist/statements/declarations/variables.js +7 -4
- package/dist/statements/declarations/variables.js.map +1 -1
- package/dist/statements/statement-cases/flow-and-void.test.js +3 -3
- package/dist/statements/statement-cases/flow-and-void.test.js.map +1 -1
- package/dist/statements/statement-cases/helpers.d.ts +3 -2
- package/dist/statements/statement-cases/helpers.d.ts.map +1 -1
- package/dist/statements/statement-cases/helpers.js +1 -1
- package/dist/statements/statement-cases/helpers.js.map +1 -1
- package/dist/statements/statement-cases/if-and-instanceof-guards.test.js +21 -21
- package/dist/statements/statement-cases/if-and-instanceof-guards.test.js.map +1 -1
- package/dist/statements/statement-cases/union-guards-basic.test.js +3 -80
- package/dist/statements/statement-cases/union-guards-basic.test.js.map +1 -1
- package/dist/statements/statement-cases/union-guards-nullish-and-object.test.js +0 -196
- package/dist/statements/statement-cases/union-guards-nullish-and-object.test.js.map +1 -1
- package/dist/statements/statement-cases/union-guards-predicate-and-truthy.test.js +15 -15
- package/dist/statements/statement-cases/union-guards-predicate-and-truthy.test.js.map +1 -1
- package/dist/statements/statement-cases/union-guards-remapped-a.test.js +7 -189
- package/dist/statements/statement-cases/union-guards-remapped-a.test.js.map +1 -1
- package/dist/statements/statement-cases/union-guards-remapped-b.test.js +7 -193
- package/dist/statements/statement-cases/union-guards-remapped-b.test.js.map +1 -1
- package/dist/test-ir-strict.d.ts +7 -0
- package/dist/test-ir-strict.d.ts.map +1 -0
- package/dist/test-ir-strict.js +9 -0
- package/dist/test-ir-strict.js.map +1 -0
- package/dist/type-assertion.test.js +5 -4
- package/dist/type-assertion.test.js.map +1 -1
- package/dist/types/emitter.d.ts.map +1 -1
- package/dist/types/emitter.js +7 -1
- package/dist/types/emitter.js.map +1 -1
- package/dist/types/intersections.d.ts +2 -2
- package/dist/types/intersections.d.ts.map +1 -1
- package/dist/types/intersections.js +26 -6
- package/dist/types/intersections.js.map +1 -1
- package/dist/types/parameters.d.ts.map +1 -1
- package/dist/types/parameters.js +30 -5
- package/dist/types/parameters.js.map +1 -1
- package/dist/types/reference-structural-signatures.d.ts.map +1 -1
- package/dist/types/reference-structural-signatures.js +3 -6
- package/dist/types/reference-structural-signatures.js.map +1 -1
- package/dist/types/references-cases/array-and-cross-module.test.js +2 -4
- package/dist/types/references-cases/array-and-cross-module.test.js.map +1 -1
- package/dist/types/references-cases/bindings-and-local.test.js +2 -4
- package/dist/types/references-cases/bindings-and-local.test.js.map +1 -1
- package/dist/types/references-cases/helpers.d.ts +3 -2
- package/dist/types/references-cases/helpers.d.ts.map +1 -1
- package/dist/types/references-cases/helpers.js +2 -1
- package/dist/types/references-cases/helpers.js.map +1 -1
- package/dist/types/references.d.ts.map +1 -1
- package/dist/types/references.js +21 -2
- package/dist/types/references.js.map +1 -1
- package/dist/types/unions-cases/basic-and-ordering.test.js +51 -0
- package/dist/types/unions-cases/basic-and-ordering.test.js.map +1 -1
- package/dist/types/unions.d.ts.map +1 -1
- package/dist/types/unions.js +17 -1
- package/dist/types/unions.js.map +1 -1
- package/dist/types.d.ts +3 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +2 -1
- package/dist/types.js.map +1 -1
- package/package.json +2 -2
- package/dist/core/semantic/js-value-types.d.ts +0 -5
- package/dist/core/semantic/js-value-types.d.ts.map +0 -1
- package/dist/core/semantic/js-value-types.js +0 -42
- package/dist/core/semantic/js-value-types.js.map +0 -1
- package/dist/core/semantic/type-resolution-cases/narrow-typeof.test.d.ts +0 -2
- package/dist/core/semantic/type-resolution-cases/narrow-typeof.test.d.ts.map +0 -1
- package/dist/core/semantic/type-resolution-cases/narrow-typeof.test.js +0 -98
- package/dist/core/semantic/type-resolution-cases/narrow-typeof.test.js.map +0 -1
- package/dist/expressions/calls/call-dynamic-import.d.ts +0 -11
- package/dist/expressions/calls/call-dynamic-import.d.ts.map +0 -1
- package/dist/expressions/calls/call-dynamic-import.js +0 -148
- package/dist/expressions/calls/call-dynamic-import.js.map +0 -1
|
@@ -7,7 +7,7 @@ import { emitTypeAst } from "../../type-emitter.js";
|
|
|
7
7
|
import { escapeCSharpIdentifier } from "../../emitter-types/index.js";
|
|
8
8
|
import { emitCSharpName } from "../../naming-policy.js";
|
|
9
9
|
import { identifierExpression } from "../../core/format/backend-ast/builders.js";
|
|
10
|
-
import { extractCalleeNameFromAst } from "../../core/format/backend-ast/utils.js";
|
|
10
|
+
import { extractCalleeNameFromAst, sameTypeAstSurface, } from "../../core/format/backend-ast/utils.js";
|
|
11
11
|
import { resolveEffectiveExpressionType, resolveRuntimeSubsetMemberNs, } from "../../core/semantic/narrowed-expression-types.js";
|
|
12
12
|
import { containsTypeParameter, getArrayLikeElementType, } from "../../core/semantic/type-resolution.js";
|
|
13
13
|
import { matchesExpectedEmissionType } from "../../core/semantic/expected-type-matching.js";
|
|
@@ -17,13 +17,14 @@ import { resolveTypeAlias, splitRuntimeNullishUnionMembers, stripNullish, } from
|
|
|
17
17
|
import { resolveComparableType } from "../../core/semantic/comparable-types.js";
|
|
18
18
|
import { resolveArrayLiteralContextType, resolveEmptyArrayLiteralContextType, } from "../../core/semantic/array-expected-types.js";
|
|
19
19
|
import { resolveRuntimeMaterializationTargetType } from "../../core/semantic/runtime-materialization-targets.js";
|
|
20
|
-
import { isBroadObjectSlotType } from "../../core/semantic/
|
|
20
|
+
import { isBroadObjectSlotType } from "../../core/semantic/broad-object-types.js";
|
|
21
21
|
import { referenceTypeHasClrIdentity } from "../../core/semantic/clr-type-identity.js";
|
|
22
22
|
import { runtimeUnionMemberCanAcceptValue } from "../../core/semantic/runtime-union-matching.js";
|
|
23
23
|
import { willCarryAsRuntimeUnion } from "../../core/semantic/union-semantics.js";
|
|
24
24
|
import { getContextualTypeVisitKey, tryContextualTypeIdentityKey, } from "../../core/semantic/deterministic-type-keys.js";
|
|
25
25
|
import { unwrapTransparentExpression } from "../../core/semantic/transparent-expressions.js";
|
|
26
|
-
import { buildRuntimeUnionLayout } from "../../core/semantic/runtime-unions.js";
|
|
26
|
+
import { buildRuntimeUnionLayout, buildRuntimeUnionTypeAst, } from "../../core/semantic/runtime-unions.js";
|
|
27
|
+
import { tryBuildRuntimeMaterializationAst } from "../../core/semantic/runtime-reification.js";
|
|
27
28
|
import { runtimeUnionAliasReferencesMatch } from "../../core/semantic/runtime-union-alias-identity.js";
|
|
28
29
|
import { getPassingModifierFromCast, isLValue } from "./call-analysis.js";
|
|
29
30
|
import { adaptValueToExpectedTypeAst, resolveDirectStorageCompatibleExpressionType, resolveDirectStorageCompatibleIrType, resolveCarrierPreservingRawExpectedType, resolveCarrierPreservingSourceType, resolveRuntimeCarrierCompatibleExpressionAst, resolveRuntimeCarrierCompatibleIrType, tryEmitCarrierPreservingExpressionAst, hasMismatchedCollectionElementCarrier, } from "../expected-type-adaptation.js";
|
|
@@ -63,8 +64,7 @@ const NUMERIC_BINDING_CLR_NAMES = new Set([
|
|
|
63
64
|
]);
|
|
64
65
|
const getFunctionValueSignature = (expr, context) => {
|
|
65
66
|
if (expr.callee.kind === "identifier") {
|
|
66
|
-
const localType = context.localSemanticTypes?.get(expr.callee.name)
|
|
67
|
-
context.localValueTypes?.get(expr.callee.name);
|
|
67
|
+
const localType = context.localSemanticTypes?.get(expr.callee.name);
|
|
68
68
|
const resolvedLocalType = resolveFunctionType(localType, context);
|
|
69
69
|
if (resolvedLocalType) {
|
|
70
70
|
return resolvedLocalType;
|
|
@@ -187,6 +187,36 @@ const resolveCarrierPassThroughArgumentType = (arg, valueAst, expectedType, cont
|
|
|
187
187
|
}
|
|
188
188
|
return resolveCarrierPreservingSourceType(carrierType, expectedType, context);
|
|
189
189
|
};
|
|
190
|
+
const tryEmitSelectedRuntimeCarrierSourceAst = (opts) => {
|
|
191
|
+
const { arg, expectedType, selectedSourceMemberNs, context } = opts;
|
|
192
|
+
if (!expectedType ||
|
|
193
|
+
!selectedSourceMemberNs ||
|
|
194
|
+
selectedSourceMemberNs.size === 0 ||
|
|
195
|
+
!willCarryAsRuntimeUnion(expectedType, context)) {
|
|
196
|
+
return undefined;
|
|
197
|
+
}
|
|
198
|
+
const narrowedMemberNs = resolveRuntimeSubsetMemberNs(arg, context);
|
|
199
|
+
if (!narrowedMemberNs ||
|
|
200
|
+
!intersectSelectedSourceMemberNs(narrowedMemberNs, selectedSourceMemberNs)) {
|
|
201
|
+
return undefined;
|
|
202
|
+
}
|
|
203
|
+
const carrierAst = resolveRuntimeCarrierCompatibleExpressionAst({
|
|
204
|
+
expr: arg,
|
|
205
|
+
context,
|
|
206
|
+
});
|
|
207
|
+
const carrierType = resolveRuntimeCarrierCompatibleIrType({ expr: arg, context }) ??
|
|
208
|
+
resolveDirectStorageCompatibleIrType({ expr: arg, context });
|
|
209
|
+
if (!carrierAst ||
|
|
210
|
+
!carrierType ||
|
|
211
|
+
!willCarryAsRuntimeUnion(stripNullish(carrierType), context)) {
|
|
212
|
+
return undefined;
|
|
213
|
+
}
|
|
214
|
+
return {
|
|
215
|
+
ast: carrierAst,
|
|
216
|
+
context,
|
|
217
|
+
actualType: carrierType,
|
|
218
|
+
};
|
|
219
|
+
};
|
|
190
220
|
const resolveContextualAdaptedArgumentType = (valueAst, contextualExpectedType, context) => {
|
|
191
221
|
if (!contextualExpectedType) {
|
|
192
222
|
return undefined;
|
|
@@ -410,6 +440,43 @@ const intersectSelectedSourceMemberNs = (left, right) => {
|
|
|
410
440
|
const intersection = new Set(Array.from(left).filter((memberN) => right.has(memberN)));
|
|
411
441
|
return intersection.size > 0 ? intersection : undefined;
|
|
412
442
|
};
|
|
443
|
+
const runtimeUnionCarrierSurfacesDiffer = (actualType, expectedType, context) => {
|
|
444
|
+
if (!actualType || !expectedType) {
|
|
445
|
+
return false;
|
|
446
|
+
}
|
|
447
|
+
const [actualLayout, actualLayoutContext] = buildRuntimeUnionLayout(stripNullish(actualType), context, emitTypeAst);
|
|
448
|
+
const [expectedLayout] = buildRuntimeUnionLayout(stripNullish(expectedType), actualLayoutContext, emitTypeAst);
|
|
449
|
+
if (!actualLayout || !expectedLayout) {
|
|
450
|
+
return false;
|
|
451
|
+
}
|
|
452
|
+
return !sameTypeAstSurface(buildRuntimeUnionTypeAst(actualLayout), buildRuntimeUnionTypeAst(expectedLayout));
|
|
453
|
+
};
|
|
454
|
+
const hasErasedStructuralViewReceiver = (callee) => callee.kind === "memberAccess" && callee.object.kind === "asinterface";
|
|
455
|
+
const mustMaterializeSourceBackedStructuralSurface = (opts) => {
|
|
456
|
+
const { expr, surfaceExpectedType, context } = opts;
|
|
457
|
+
if (!surfaceExpectedType ||
|
|
458
|
+
!expr.sourceBackedSurfaceParameterTypes ||
|
|
459
|
+
!hasErasedStructuralViewReceiver(expr.callee)) {
|
|
460
|
+
return false;
|
|
461
|
+
}
|
|
462
|
+
const resolvedSurface = resolveTypeAlias(stripNullish(surfaceExpectedType), context);
|
|
463
|
+
return (resolvedSurface.kind === "unionType" ||
|
|
464
|
+
willCarryAsRuntimeUnion(resolvedSurface, context));
|
|
465
|
+
};
|
|
466
|
+
const shouldSkipRuntimeUnionArgumentMaterialization = (opts) => {
|
|
467
|
+
const { forceRuntimeUnionArgumentMaterialization, carrierPassThroughArgumentType, carrierPassThroughType, exactFinalExpectedArgumentType, materializationActualArgumentType, adaptationExpectedType, context, } = opts;
|
|
468
|
+
if (forceRuntimeUnionArgumentMaterialization) {
|
|
469
|
+
return false;
|
|
470
|
+
}
|
|
471
|
+
if (exactFinalExpectedArgumentType) {
|
|
472
|
+
return !runtimeUnionCarrierSurfacesDiffer(materializationActualArgumentType, adaptationExpectedType, context);
|
|
473
|
+
}
|
|
474
|
+
const passThroughType = carrierPassThroughArgumentType ?? carrierPassThroughType;
|
|
475
|
+
if (!passThroughType) {
|
|
476
|
+
return false;
|
|
477
|
+
}
|
|
478
|
+
return !runtimeUnionCarrierSurfacesDiffer(passThroughType, adaptationExpectedType, context);
|
|
479
|
+
};
|
|
413
480
|
const resolveSelectedSourceMemberNs = (arg, selectedExpectedType, finalExpectedType, surfaceExpectedType, context) => intersectSelectedSourceMemberNs(resolveRuntimeSubsetMemberNs(arg, context), resolveSurfaceSelectedSourceMemberNs(selectedExpectedType, finalExpectedType, surfaceExpectedType, context));
|
|
414
481
|
const resolveAdaptationExpectedType = (selectedExpectedType, finalExpectedType, surfaceExpectedType, context) => {
|
|
415
482
|
if (!finalExpectedType) {
|
|
@@ -569,13 +636,18 @@ const shouldDeferStructuralObjectArgumentMaterialization = (opts) => {
|
|
|
569
636
|
expectedProps.length > 0);
|
|
570
637
|
};
|
|
571
638
|
const selectAdaptationActualArgumentType = (opts) => {
|
|
572
|
-
const { carrierPassThroughType, exactFinalExpectedArgumentType, directStorageArgumentType, contextualAdaptedActualType, resolvedFunctionArgumentType, effectiveArgumentType, inferredArgumentType, selectedSourceMemberNs, context, } = opts;
|
|
639
|
+
const { carrierPassThroughType, exactFinalExpectedArgumentType, directStorageArgumentType, contextualAdaptedActualType, resolvedFunctionArgumentType, effectiveArgumentType, inferredArgumentType, expectedType, selectedSourceMemberNs, context, } = opts;
|
|
573
640
|
if (carrierPassThroughType) {
|
|
574
641
|
return carrierPassThroughType;
|
|
575
642
|
}
|
|
576
643
|
if (exactFinalExpectedArgumentType) {
|
|
577
644
|
return exactFinalExpectedArgumentType;
|
|
578
645
|
}
|
|
646
|
+
if (effectiveArgumentType &&
|
|
647
|
+
expectedType &&
|
|
648
|
+
areIrTypesEquivalent(stripNullish(effectiveArgumentType), stripNullish(expectedType), context)) {
|
|
649
|
+
return effectiveArgumentType;
|
|
650
|
+
}
|
|
579
651
|
if (selectedSourceMemberNs &&
|
|
580
652
|
selectedSourceMemberNs.size > 0 &&
|
|
581
653
|
effectiveArgumentType &&
|
|
@@ -609,6 +681,11 @@ const selectCollectionMaterializationActualArgumentType = (opts) => {
|
|
|
609
681
|
if (!expectedType) {
|
|
610
682
|
return selectedActualType;
|
|
611
683
|
}
|
|
684
|
+
if (selectedActualType &&
|
|
685
|
+
(runtimeUnionAliasReferencesMatch(selectedActualType, expectedType, context) ||
|
|
686
|
+
resolveCarrierPreservingSourceType(selectedActualType, expectedType, context))) {
|
|
687
|
+
return selectedActualType;
|
|
688
|
+
}
|
|
612
689
|
const sourceBackedReturnType = arg.kind === "call" || arg.kind === "new"
|
|
613
690
|
? arg.sourceBackedReturnType
|
|
614
691
|
: undefined;
|
|
@@ -960,7 +1037,6 @@ const resolveActualFunctionTypeForArgument = (arg, context) => {
|
|
|
960
1037
|
};
|
|
961
1038
|
if (arg.kind === "identifier") {
|
|
962
1039
|
return trimToDeclaredArity(resolveFunctionType(context.localSemanticTypes?.get(arg.name) ??
|
|
963
|
-
context.localValueTypes?.get(arg.name) ??
|
|
964
1040
|
context.valueSymbols?.get(arg.name)?.type ??
|
|
965
1041
|
arg.inferredType, context));
|
|
966
1042
|
}
|
|
@@ -1202,18 +1278,32 @@ const emitFunctionValueCallArguments = (args, signature, expr, context) => {
|
|
|
1202
1278
|
finalExpectedType: adaptationExpectedType,
|
|
1203
1279
|
context: currentContext,
|
|
1204
1280
|
}));
|
|
1281
|
+
const contextualRawEmitExpectedTypeCandidate = arg.kind === "arrowFunction" || arg.kind === "functionExpression"
|
|
1282
|
+
? (selectedParameterType ??
|
|
1283
|
+
rawEmitExpectedTypeCandidate ??
|
|
1284
|
+
contextualExpectedType ??
|
|
1285
|
+
adaptationExpectedType ??
|
|
1286
|
+
finalExpectedType ??
|
|
1287
|
+
selectedExpectedType)
|
|
1288
|
+
: rawEmitExpectedTypeCandidate;
|
|
1205
1289
|
const rawEmitExpectedType = shouldDeferStructuralObjectArgumentMaterialization({
|
|
1206
1290
|
arg,
|
|
1207
|
-
rawExpectedType:
|
|
1291
|
+
rawExpectedType: contextualRawEmitExpectedTypeCandidate,
|
|
1208
1292
|
context: currentContext,
|
|
1209
1293
|
})
|
|
1210
1294
|
? undefined
|
|
1211
|
-
:
|
|
1295
|
+
: contextualRawEmitExpectedTypeCandidate;
|
|
1212
1296
|
const carrierPassThroughArgument = tryEmitCarrierPreservingExpressionAst({
|
|
1213
1297
|
expr: arg,
|
|
1214
1298
|
expectedType: adaptationExpectedType,
|
|
1215
1299
|
context: currentContext,
|
|
1216
1300
|
});
|
|
1301
|
+
const selectedCarrierSourceArgument = tryEmitSelectedRuntimeCarrierSourceAst({
|
|
1302
|
+
arg,
|
|
1303
|
+
expectedType: adaptationExpectedType,
|
|
1304
|
+
selectedSourceMemberNs,
|
|
1305
|
+
context: currentContext,
|
|
1306
|
+
});
|
|
1217
1307
|
const concreteArrayLiteralRawExpectedType = arg.kind === "array"
|
|
1218
1308
|
? resolveConcreteArrayLiteralContextType(rawEmitExpectedType ??
|
|
1219
1309
|
adaptationExpectedType ??
|
|
@@ -1224,7 +1314,12 @@ const emitFunctionValueCallArguments = (args, signature, expr, context) => {
|
|
|
1224
1314
|
: undefined;
|
|
1225
1315
|
const [rawArgAst, rawArgCtx] = carrierPassThroughArgument
|
|
1226
1316
|
? [carrierPassThroughArgument.ast, carrierPassThroughArgument.context]
|
|
1227
|
-
:
|
|
1317
|
+
: selectedCarrierSourceArgument
|
|
1318
|
+
? [
|
|
1319
|
+
selectedCarrierSourceArgument.ast,
|
|
1320
|
+
selectedCarrierSourceArgument.context,
|
|
1321
|
+
]
|
|
1322
|
+
: emitExpressionAst(arg, currentContext, concreteArrayLiteralRawExpectedType ?? rawEmitExpectedType);
|
|
1228
1323
|
const carrierPassThroughType = resolveCarrierPassThroughArgumentType(arg, rawArgAst, adaptationExpectedType, rawArgCtx);
|
|
1229
1324
|
const directStorageArgumentType = resolveDirectStorageCompatibleExpressionType({
|
|
1230
1325
|
expr: arg,
|
|
@@ -1243,6 +1338,7 @@ const emitFunctionValueCallArguments = (args, signature, expr, context) => {
|
|
|
1243
1338
|
const postEmitEffectiveArgumentType = resolveEffectiveExpressionType(arg, rawArgCtx);
|
|
1244
1339
|
const effectiveArgumentType = postEmitEffectiveArgumentType ?? preEmitActualArgumentType;
|
|
1245
1340
|
const actualArgumentType = carrierPassThroughArgument?.actualType ??
|
|
1341
|
+
selectedCarrierSourceArgument?.actualType ??
|
|
1246
1342
|
selectAdaptationActualArgumentType({
|
|
1247
1343
|
carrierPassThroughType,
|
|
1248
1344
|
exactFinalExpectedArgumentType,
|
|
@@ -1251,6 +1347,7 @@ const emitFunctionValueCallArguments = (args, signature, expr, context) => {
|
|
|
1251
1347
|
resolvedFunctionArgumentType: resolveActualFunctionTypeForArgument(arg, rawArgCtx),
|
|
1252
1348
|
effectiveArgumentType,
|
|
1253
1349
|
inferredArgumentType: arg.inferredType,
|
|
1350
|
+
expectedType: adaptationExpectedType,
|
|
1254
1351
|
selectedSourceMemberNs,
|
|
1255
1352
|
context: rawArgCtx,
|
|
1256
1353
|
});
|
|
@@ -1261,17 +1358,44 @@ const emitFunctionValueCallArguments = (args, signature, expr, context) => {
|
|
|
1261
1358
|
expectedType: adaptationExpectedType,
|
|
1262
1359
|
context: rawArgCtx,
|
|
1263
1360
|
});
|
|
1264
|
-
const
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
|
|
1361
|
+
const forceRuntimeUnionArgumentMaterialization = mustMaterializeSourceBackedStructuralSurface({
|
|
1362
|
+
expr,
|
|
1363
|
+
surfaceExpectedType: surfaceParameterType,
|
|
1364
|
+
context: rawArgCtx,
|
|
1365
|
+
});
|
|
1366
|
+
const forcedRuntimeUnionSourceType = effectiveArgumentType ??
|
|
1367
|
+
preEmitStorageAwareArgumentType ??
|
|
1368
|
+
preEmitActualArgumentType ??
|
|
1369
|
+
arg.inferredType ??
|
|
1370
|
+
materializationActualArgumentType;
|
|
1371
|
+
const skipRuntimeUnionArgumentMaterialization = shouldSkipRuntimeUnionArgumentMaterialization({
|
|
1372
|
+
forceRuntimeUnionArgumentMaterialization,
|
|
1373
|
+
carrierPassThroughArgumentType: carrierPassThroughArgument?.actualType,
|
|
1374
|
+
carrierPassThroughType,
|
|
1375
|
+
exactFinalExpectedArgumentType,
|
|
1376
|
+
materializationActualArgumentType,
|
|
1377
|
+
adaptationExpectedType,
|
|
1378
|
+
context: rawArgCtx,
|
|
1379
|
+
});
|
|
1380
|
+
const forcedRuntimeUnionArgument = forceRuntimeUnionArgumentMaterialization &&
|
|
1381
|
+
adaptationExpectedType &&
|
|
1382
|
+
forcedRuntimeUnionSourceType
|
|
1383
|
+
? tryBuildRuntimeMaterializationAst(rawArgAst, forcedRuntimeUnionSourceType, adaptationExpectedType, rawArgCtx, emitTypeAst, selectedSourceMemberNs)
|
|
1384
|
+
: undefined;
|
|
1385
|
+
if (forceRuntimeUnionArgumentMaterialization &&
|
|
1386
|
+
!forcedRuntimeUnionArgument) {
|
|
1387
|
+
throw new Error("Internal Compiler Error: source-backed structural call argument could not be materialized to its runtime surface.");
|
|
1388
|
+
}
|
|
1389
|
+
const [materializedArgAst, materializedArgCtx] = forcedRuntimeUnionArgument ??
|
|
1390
|
+
(skipRuntimeUnionArgumentMaterialization
|
|
1391
|
+
? [rawArgAst, rawArgCtx]
|
|
1392
|
+
: (adaptValueToExpectedTypeAst({
|
|
1393
|
+
valueAst: rawArgAst,
|
|
1394
|
+
actualType: materializationActualArgumentType,
|
|
1395
|
+
context: rawArgCtx,
|
|
1396
|
+
expectedType: adaptationExpectedType,
|
|
1397
|
+
selectedSourceMemberNs,
|
|
1398
|
+
}) ?? [rawArgAst, rawArgCtx]));
|
|
1275
1399
|
const numericActualArgumentType = selectPostMaterializationNumericCastArgumentType({
|
|
1276
1400
|
rawArgAst,
|
|
1277
1401
|
materializedArgAst,
|
|
@@ -1391,6 +1515,16 @@ const selectDeterministicUnionParameterMember = (expectedType, arg, context) =>
|
|
|
1391
1515
|
if (!actualType) {
|
|
1392
1516
|
return expectedType;
|
|
1393
1517
|
}
|
|
1518
|
+
if (runtimeUnionAliasReferencesMatch(actualType, expectedType, context) ||
|
|
1519
|
+
(arg.kind === "identifier" &&
|
|
1520
|
+
(() => {
|
|
1521
|
+
const narrowed = context.narrowedBindings?.get(arg.name);
|
|
1522
|
+
return (narrowed?.kind === "expr" &&
|
|
1523
|
+
narrowed.type !== undefined &&
|
|
1524
|
+
runtimeUnionAliasReferencesMatch(narrowed.type, expectedType, context));
|
|
1525
|
+
})())) {
|
|
1526
|
+
return expectedType;
|
|
1527
|
+
}
|
|
1394
1528
|
const expectedNullishSplit = splitRuntimeNullishUnionMembers(expectedType);
|
|
1395
1529
|
const actualIsExplicitRuntimeNullish = actualType.kind === "primitiveType" &&
|
|
1396
1530
|
(actualType.name === "undefined" || actualType.name === "null");
|
|
@@ -1657,7 +1791,7 @@ const emitCallArguments = (args, expr, context, parameterTypeOverrides) => {
|
|
|
1657
1791
|
resolveFinalCallArgumentExpectedType(expectedType, normalizedRuntime, preEmitStorageAwareArgumentType, currentContext) ??
|
|
1658
1792
|
contextualExpectedType;
|
|
1659
1793
|
const adaptationExpectedType = resolveAdaptationExpectedType(expectedType, finalExpectedType, surfaceParameterType, currentContext);
|
|
1660
|
-
const selectedSourceMemberNs =
|
|
1794
|
+
const selectedSourceMemberNs = resolveSelectedSourceMemberNs(arg, expectedType, finalExpectedType, surfaceParameterType, currentContext);
|
|
1661
1795
|
const rawEmitExpectedTypeCandidate = explicitNullishSurfaceExpectedType ??
|
|
1662
1796
|
(shouldPreserveOptionalSurfaceRawEmission({
|
|
1663
1797
|
arg,
|
|
@@ -1681,13 +1815,21 @@ const emitCallArguments = (args, expr, context, parameterTypeOverrides) => {
|
|
|
1681
1815
|
finalExpectedType: adaptationExpectedType,
|
|
1682
1816
|
context: currentContext,
|
|
1683
1817
|
}));
|
|
1818
|
+
const contextualRawEmitExpectedTypeCandidate = arg.kind === "arrowFunction" || arg.kind === "functionExpression"
|
|
1819
|
+
? (selectedParameterTypes[i] ??
|
|
1820
|
+
rawEmitExpectedTypeCandidate ??
|
|
1821
|
+
contextualExpectedType ??
|
|
1822
|
+
adaptationExpectedType ??
|
|
1823
|
+
finalExpectedType ??
|
|
1824
|
+
expectedType)
|
|
1825
|
+
: rawEmitExpectedTypeCandidate;
|
|
1684
1826
|
const rawEmitExpectedType = shouldDeferStructuralObjectArgumentMaterialization({
|
|
1685
1827
|
arg,
|
|
1686
|
-
rawExpectedType:
|
|
1828
|
+
rawExpectedType: contextualRawEmitExpectedTypeCandidate,
|
|
1687
1829
|
context: currentContext,
|
|
1688
1830
|
})
|
|
1689
1831
|
? undefined
|
|
1690
|
-
:
|
|
1832
|
+
: contextualRawEmitExpectedTypeCandidate;
|
|
1691
1833
|
if (arg.kind === "spread") {
|
|
1692
1834
|
const [spreadAst, ctx] = emitExpressionAst(arg.expression, currentContext);
|
|
1693
1835
|
argAsts.push(spreadAst);
|
|
@@ -1721,6 +1863,12 @@ const emitCallArguments = (args, expr, context, parameterTypeOverrides) => {
|
|
|
1721
1863
|
expectedType: adaptationExpectedType,
|
|
1722
1864
|
context: currentContext,
|
|
1723
1865
|
});
|
|
1866
|
+
const selectedCarrierSourceArgument = tryEmitSelectedRuntimeCarrierSourceAst({
|
|
1867
|
+
arg,
|
|
1868
|
+
expectedType: adaptationExpectedType,
|
|
1869
|
+
selectedSourceMemberNs,
|
|
1870
|
+
context: currentContext,
|
|
1871
|
+
});
|
|
1724
1872
|
const concreteArrayLiteralRawExpectedType = arg.kind === "array"
|
|
1725
1873
|
? resolveConcreteArrayLiteralContextType(rawEmitExpectedType ??
|
|
1726
1874
|
adaptationExpectedType ??
|
|
@@ -1731,7 +1879,12 @@ const emitCallArguments = (args, expr, context, parameterTypeOverrides) => {
|
|
|
1731
1879
|
: undefined;
|
|
1732
1880
|
const [rawArgAst, emittedContext] = carrierPassThroughArgument
|
|
1733
1881
|
? [carrierPassThroughArgument.ast, carrierPassThroughArgument.context]
|
|
1734
|
-
:
|
|
1882
|
+
: selectedCarrierSourceArgument
|
|
1883
|
+
? [
|
|
1884
|
+
selectedCarrierSourceArgument.ast,
|
|
1885
|
+
selectedCarrierSourceArgument.context,
|
|
1886
|
+
]
|
|
1887
|
+
: emitExpressionAst(arg, currentContext, concreteArrayLiteralRawExpectedType ?? rawEmitExpectedType);
|
|
1735
1888
|
const carrierPassThroughType = resolveCarrierPassThroughArgumentType(arg, rawArgAst, adaptationExpectedType, emittedContext);
|
|
1736
1889
|
const directStorageArgumentType = resolveDirectStorageCompatibleExpressionType({
|
|
1737
1890
|
expr: arg,
|
|
@@ -1750,6 +1903,7 @@ const emitCallArguments = (args, expr, context, parameterTypeOverrides) => {
|
|
|
1750
1903
|
const postEmitEffectiveArgumentType = resolveEffectiveExpressionType(arg, emittedContext);
|
|
1751
1904
|
const effectiveArgumentType = postEmitEffectiveArgumentType ?? preEmitEffectiveArgumentType;
|
|
1752
1905
|
const actualArgumentType = carrierPassThroughArgument?.actualType ??
|
|
1906
|
+
selectedCarrierSourceArgument?.actualType ??
|
|
1753
1907
|
selectAdaptationActualArgumentType({
|
|
1754
1908
|
carrierPassThroughType,
|
|
1755
1909
|
exactFinalExpectedArgumentType,
|
|
@@ -1758,6 +1912,8 @@ const emitCallArguments = (args, expr, context, parameterTypeOverrides) => {
|
|
|
1758
1912
|
resolvedFunctionArgumentType: resolveActualFunctionTypeForArgument(arg, emittedContext),
|
|
1759
1913
|
effectiveArgumentType,
|
|
1760
1914
|
inferredArgumentType: arg.inferredType,
|
|
1915
|
+
expectedType: adaptationExpectedType,
|
|
1916
|
+
selectedSourceMemberNs,
|
|
1761
1917
|
context: emittedContext,
|
|
1762
1918
|
});
|
|
1763
1919
|
const materializationActualArgumentType = selectCollectionMaterializationActualArgumentType({
|
|
@@ -1767,17 +1923,44 @@ const emitCallArguments = (args, expr, context, parameterTypeOverrides) => {
|
|
|
1767
1923
|
expectedType: adaptationExpectedType,
|
|
1768
1924
|
context: emittedContext,
|
|
1769
1925
|
});
|
|
1770
|
-
const
|
|
1771
|
-
|
|
1772
|
-
|
|
1773
|
-
|
|
1774
|
-
|
|
1775
|
-
|
|
1776
|
-
|
|
1777
|
-
|
|
1778
|
-
|
|
1779
|
-
|
|
1780
|
-
|
|
1926
|
+
const forceRuntimeUnionArgumentMaterialization = mustMaterializeSourceBackedStructuralSurface({
|
|
1927
|
+
expr,
|
|
1928
|
+
surfaceExpectedType: surfaceParameterType,
|
|
1929
|
+
context: emittedContext,
|
|
1930
|
+
});
|
|
1931
|
+
const forcedRuntimeUnionSourceType = effectiveArgumentType ??
|
|
1932
|
+
preEmitStorageAwareArgumentType ??
|
|
1933
|
+
preEmitEffectiveArgumentType ??
|
|
1934
|
+
arg.inferredType ??
|
|
1935
|
+
materializationActualArgumentType;
|
|
1936
|
+
const skipRuntimeUnionArgumentMaterialization = shouldSkipRuntimeUnionArgumentMaterialization({
|
|
1937
|
+
forceRuntimeUnionArgumentMaterialization,
|
|
1938
|
+
carrierPassThroughArgumentType: carrierPassThroughArgument?.actualType,
|
|
1939
|
+
carrierPassThroughType,
|
|
1940
|
+
exactFinalExpectedArgumentType,
|
|
1941
|
+
materializationActualArgumentType,
|
|
1942
|
+
adaptationExpectedType,
|
|
1943
|
+
context: emittedContext,
|
|
1944
|
+
});
|
|
1945
|
+
const forcedRuntimeUnionArgument = forceRuntimeUnionArgumentMaterialization &&
|
|
1946
|
+
adaptationExpectedType &&
|
|
1947
|
+
forcedRuntimeUnionSourceType
|
|
1948
|
+
? tryBuildRuntimeMaterializationAst(rawArgAst, forcedRuntimeUnionSourceType, adaptationExpectedType, emittedContext, emitTypeAst, selectedSourceMemberNs)
|
|
1949
|
+
: undefined;
|
|
1950
|
+
if (forceRuntimeUnionArgumentMaterialization &&
|
|
1951
|
+
!forcedRuntimeUnionArgument) {
|
|
1952
|
+
throw new Error("Internal Compiler Error: source-backed structural call argument could not be materialized to its runtime surface.");
|
|
1953
|
+
}
|
|
1954
|
+
const [materializedArgAst, materializedContext] = forcedRuntimeUnionArgument ??
|
|
1955
|
+
(skipRuntimeUnionArgumentMaterialization
|
|
1956
|
+
? [rawArgAst, emittedContext]
|
|
1957
|
+
: (adaptValueToExpectedTypeAst({
|
|
1958
|
+
valueAst: rawArgAst,
|
|
1959
|
+
actualType: materializationActualArgumentType,
|
|
1960
|
+
context: emittedContext,
|
|
1961
|
+
expectedType: adaptationExpectedType,
|
|
1962
|
+
selectedSourceMemberNs,
|
|
1963
|
+
}) ?? [rawArgAst, emittedContext]));
|
|
1781
1964
|
const numericActualArgumentType = selectPostMaterializationNumericCastArgumentType({
|
|
1782
1965
|
rawArgAst,
|
|
1783
1966
|
materializedArgAst,
|