[5.5][CSBindings] Don't infer subtypes/supertype bindings for a closure type #37322
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.
Fixes a crash during invalid solution application which was formed
due to incorrect inference of a closure type.
A type representing a closure expression is always bound to its
"inferred" type based on the body, so contextual bindings just
serve as a trigger to "resolve" a closure. Let's not attempt any
subtype/supertype inference for a type variable representing a
closure since if "direct" bindings have failed, it wouldn't be bound
to such types regardless.
Scope: Invalid expressions where closure is passed to a parameter represented by generic parameter wrapped into an optional or similar situation when it's possible to "infer" subtype/supertype bindings based on direct ones.
Main Branch PR: [CSBindings] Don't infer subtypes/supertype bindings for a closure type #37292
Resolves: rdar://77022842
Risk: Very low
Reviewed By: @hborla
Testing: Regression tests added to the suite
Resolves: rdar://77022842
(cherry picked from commit 3c0388d)