[5.5][CSBindings] Account for literal bindings when checking "subtype of existential" property #37672
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Cherry-pick of #37643
Fixes a source compatibility regression introduced by incremental
binding inference that results in type-checker rejecting valid code.
It's important to know whether a binding set has all of its bindings
as subtypes of some existential type(s), type variables like that
should be delayed.
Incremental binding inference introduced a bug into computation of
this property by checking only directly inferable bindings, but
it's also important to check that there are no literal requirements
that can produce bindings, because that would mean that type variable
can never be just a subtype of existential type(s).
Scope: Nested literal array with ternary operators that are contextually converted to an existential type.
Main Branch PR: [CSBindings] Account for literal bindings when checking "subtype of e… #37643
Resolves: rdar://77570994
Risk: Low
Reviewed By: @hborla
Testing: Regression tests added to the suite
Resolves: rdar://77570994
(cherry picked from commit cf13e29)