Merged
Conversation
marcandre
added a commit
to headius/backports
that referenced
this pull request
Mar 5, 2024
Let's not go out of our way to return senseless results. See ruby/spec#1140
A negative `size` makes no sense at all, -infinity even less so. It is indeed the case that Ruby currently returns `-infinity` (even if you take the product of two of these senseless enumerables), but that doesn't make it a _valid spec_. Ruby does this because it is simpler to test for ±infinity than it is to test for +infinity... Other alternative implementations should _not_ attempt to mimick such behaviour. One could argue it is a bug (and `nil` should be returned maybe, but that would be the case for any negative `size`), or that the current result is acceptable because "garbage in garbage out", but nobody in their right mind would rely on this behavior and clearly returning `nil` or raising an exception are better results than returning - infinity. This PR leaves this uninteresting and ill-defined corner case as implementation dependent.
a736652 to
8fd23da
Compare
Member
|
Agree! Wondering if it makes sense to have means to specify explicitly in specs that some case has undefined behaviour or implementation-specific one? In case a CRuby behaviour is considered as not accurate? |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
A negative
sizemakes no sense at all, -infinity even less so. It is indeed the case that Ruby currently returns-infinity(even if you take the product of two of these senseless enumerables), but that doesn't make it a valid spec. Ruby does this because it is simpler to test for ±infinity than it is to test for +infinity...Other alternative implementations should not attempt to mimick such behaviour.
One could argue it is a bug (and
nilshould be returned maybe, but that would be the case for any negativesize), or that the current result is acceptable because "garbage in garbage out", but nobody in their right mind would rely on this behavior and clearly returningnilor raising an exception are better results than returning - infinity.This PR leaves this uninteresting and ill-defined corner case as implementation dependent.
Ref: marcandre/backports#192