[4.1][CSBindings] Look through optional types when trying to validate l-va… #14490
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.
…lueness of the new bindings
• Explanation: When bindings are picked for particular type variable, right-hand
side of the binding might be another type variable wrapped into optional
type, when trying to determine if both sides of the binding have the
same l-valueness it's imperative to look through optional type of the
right-hand side. Otherwise new binding might be effectively unsolvable.
• Scope of Issue: Affects logic related to picking bindings for type variables in constraint solver.
• Origination: Looks like this might be caused by re-work which happened when
mustBeMaterializable
has been split.• Risk: Low risk; Fixes a bug in constraint solver.
• Reviewed By: @rudkx
• Testing: Compiler regression tests
• Radar / SR: rdar://problem/37291371
Resolves: rdar://problem/37291371
(cherry picked from commit c6ff7b4)