Make Pointer(T)#value=
even stricter for generic arguments
#10553
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.
Follow-up to #10224. Resolves #10544. That code will now produce the following error:
The correct check for covariance is
implements?
, because roughly speakingfilter_by
only performs intersection between two types. (x.implements?(y)
impliesx.filter_by(y).implements?(x) && x.implements?(x.filter_by(y))
.)The relation between
Nil
andVoid
is not captured byimplements?
yet, so it is specially handled here. I would expectVoid
to be a module-like type that has no parents, and whose includer isNil
and nothing else.