fix part of #24166: bug in diagonal typevars on the right #24174
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.
The first problem is a case like this:
where
S
is diagonal butT
is not.S
is more constrained so this should be false. This is fixed by adding a check that a var (T) appearing as the lower bound of a diagonal var (S) must itself be diagonal.The second problem is this:
Though this seems absurd, the issue is that S's lower bound comes out to
Union{T,Int}
which we then think is not concrete. Determining whether a lower bound is concrete enough is still an open problem, but I put a band-aid on this by simplifyingUnion{T,S}
givenT>:S
toT
.