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.
coerce_si
is not sufficiently tested. This draft PR asks what we should test (and hence specify)Currently with MoarVM master we see this:
which is a change in behaviour from all releases. This is caused by MoarVM/MoarVM@b80996f (and will soon be fixed)
However, it's unclear what the desired behaviour is for corner cases. The tests here all pass once MoarVM is fixed. However, they would fail on released nqp
MoarVM used to use
strtoll
, which returns 0 on parsing failures. However, the callMVM_string_ascii_encode_any
would throw an exception for any character outside of 0-127, hence the tests here fail like this:JVM is much stricter, failing at the first new test:
@MasterDuke17 reports that the relevant conversion API we use is very exacting:
Hence any spaces are right out:
Hence the question is - what should the spec be?
I'm happy to recode either MoarVM or the Java code (or both) to be consistent, but I'd like to have a more tightly defined spec of how much slop we're allowed in the number, and for which cases we throw an exception, which cases we return 0, which leading characters we can ignore, and which cases we just ignore "trailing garbage"