Fix lineno for multiline char literals #103
Open
+0
−1
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.
This avoids redundant newlines in the output when encountering a multiline char literal. I don't think multiline char literals are actually valid in C, but preserving the original whitespace is useful when mixed with other tooling.
Before:
After:
It looks like t_CPP_CHAR was trying to adjust the lineno for consumed newlines, but unlike t_CPP_STRING and t_CPP_COMMENT1, it doesn't actually consume any newlines.
As for how I even ran into this. I'm using pcpp to parse some, uh, non-C stuff, which pcpp's relaxed preprocessing is very useful for.
But I think this is unlikely to be encountered in real C code, so feel free to close if out-of-scope.
python setup.py testpassed locally.