[6.0][CSBindings] Optional object type variable should be connected to the optional #73983
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 #73960
Explanation:
Fixes a recent regression in for-in lookup type-checking.
If both sides of an
OptionalObject
constraint are un-inferred, theirbinding sets need to correctly reflect adjacency - a type variable
that represents optional would get "object" as an adjacency through
its potential binding (the binding is - "object" wrapped in a single
level of optional) and "object" type variable needs to get its parent
optional type variable added to its adjacency list explicitly.
Without this it would be possible to prematurely pick "object" before
its parent optional type variable.
Scope: One known situation where this comes up is for-in loop where the pattern has an explicit contextual type.
Main Branch PRs: [CSBindings] Optional object type variable should be connected to the optional #73960
Resolves: (type checker) regression on main in subtyping rules for tuple labels #73207
Resolves: rdar://126960579
Risk: Low
Reviewed By: @hborla
Testing: Added new test-cases to the test suite