fix: parsing local version with digit followed by non-digits #3032
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.
When parsing the local identifier segment of
<digit><letter>
the parser wouldgive an error saying the letter was unexpected.
What was happening was
accept_digits()
consumed up to the first non-digit, andconsidered this success, which prevented calling
accept_alnum()
to finishthe parsing.
To fix, only call
accept_alnum()
, then post-process the value to normalizean all-digit segment.
I'm guessing
accept_digits()
stopping at the first non-digit is WAI becauseit expects to parse e.g. "3.14b", where the caller handles subsequent
characters.
Along the way, some minor doc improvements to the parser code.
Fixes #3030