Function macro expansion bug when multi argument macro arg has same name as user input #32
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.
Reproduce
gets expanded to
because the replacement of each argument is a separate string replacement pass. So first it replaces the first argument,
x
, with what the user supplied,y
, making the stringy + y
. Then it goes on to replace the second argument,y
, with the user suppliedx
, making the stringx + x
.This bug is triggered when a function macro has more than one argument, and the second argument (in this case
y
also matches what the user replace the first argument with.Fix
I switched the replacement to be a single pass replace, so there is no second pass to clobber the first replacement.
Addresses #31