std.fmt: check result types in parseInt functions #24256
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.
The
parseInt()
family of functions do not perform type checking thus accepting erroneous inputs for result types.Sample subject case, built with zig
0.15.0-dev.869+640a13065
:Outputs:
This PR checks that the given input (T or Result) is an integer and ouputs a compiler error when this is not true. The specific form of error output was taken from prior art in
parseFloat()
. While the code will not compile without this change, it is desirable to make this a clear compiler error, both to prevent processing of invalid inputs and improve user experience.Output with patch:
parseIntWithSign()
is not exported from the container but I believe its inclusion has merit. Type check is compile- time and an assertion of expected input type(s); docs (which, to be fair, are largely taken from otherparseInt()
fn's) ease readability of source code.