Skip to content

Fix wrong scalar value type detection from floating point value token #414

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Oct 20, 2024

Conversation

fktn-k
Copy link
Owner

@fktn-k fktn-k commented Oct 20, 2024

The current deserialization feature detects wrong scalar value types from token in some valid floating point value formats which contain the decimal point and/or the exponent:

  • the significand is an integer before the exponent (reported in the issue Bug on parinsing trivial YAML #413)
    1e-1
  • the significand's integer part is omitted
    - .1e+2
    - -.1e-1
    - .1e2
  • the significand's fractional part is omitted
    - 1.e2
    - -1.e-1
    - -1.e+2
  • the significand is 0
    0e+1

All of them are valid according to the YAML standard 1.2, but the scalar_scanner class mistakenly detects them as either integer or string scalar value types.

This PR fixes such wrong detections and a number of test cases are also added to validate the changes.


Pull Request Checklist

Read the CONTRIBUTING.md file for detailed information.

  • Changes are described in the pull request or in a referenced issue.
  • The test suite compiles and runs without any error.
  • The code coverage on your branch is 100%.
  • The documentation is updated if you added/changed a feature.

Please don't

  • The C++11 support varies between different compilers and versions. Please note the list of supported compilers. Some compilers like GCC 4.7 (and earlier), Clang 3.3 (and earlier), or Microsoft Visual Studio 13.0 and earlier are known not to work due to missing or incomplete C++11 support. Please refrain from proposing changes that work around these compiler's limitations with #ifdefs or other means.
  • Please refrain from proposing changes that would break YAML specifications. If you propose a conformant extension of YAML to be supported by the library, please motivate this extension.
  • Please do not open pull requests that address multiple issues.

@fktn-k fktn-k added the bug Something isn't working label Oct 20, 2024
@fktn-k fktn-k added this to the Release v0.3.14 milestone Oct 20, 2024
@fktn-k fktn-k self-assigned this Oct 20, 2024
Copy link

:octocat: Upload Coverage Event Notification

Coverage data has been uploaded for the commit 1ee8eedf8571982384b5f1e1575f3548a04c1731.
You can download the artifact which contains the same file uploaded to the Coveralls and its HTML version.

Name fkYAML_coverage.pr414.zip
ID 2078578219
URL https://github.com/fktn-k/fkYAML/actions/runs/11423451407/artifacts/2078578219

@fktn-k fktn-k merged commit 31d3756 into develop Oct 20, 2024
165 checks passed
@fktn-k fktn-k deleted the bugfix/413_float_scalar_parsing branch October 20, 2024 05:00
@fktn-k fktn-k mentioned this pull request Oct 20, 2024
2 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant