Fix #20897: Make Nothing ⋔ Nothing, as per spec.
#21241
Merged
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.
derivesFrom, used inprovablyDisjointClasses, normally returnsfalsewhen the receiver isNothing. However, it returnstrueif the right-hand-side happens to be exactlyNothingas well. For the purpose of computingprovablyDisjoint, that is not what we want.The root issue was that we let the previous algorithm handle
Nothinglike a class type, which it is in dotc but not in the spec. That led to this mistake.AnyKindsuffers a similar issue, but already had special-cases in various places to mitigate it.Instead of adding a new special-case for
NothinginsideprovablyDisjointClasses, we address the root issue. Now we deal withNothingandAnyKindearly, before trying any of the code paths that handle (real) class types.