use QuoteNode and LineNumberNode consistently #23885
Merged
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.
There is a bit of confusion about when
Expr
s are used vs. specialized node types likeQuoteNode
andLineNumberNode
. Typically we have used Exprs for ASTs, including all macro inputs and outputs. My original plan for this issue was to plug the "leak" ofQuoteNode
s into macros by going back toExpr
s for all macro arguments. However, it turns out thatQuoteNode
andLineNumberNode
have already leaked into quite a few places, such that it's much simpler to go the other way and just use them more consistently.This removes a bunch of code since we now always represent line numbers with
LineNumberNode
instead of:line
Exprs.This will break code that only looks for
:quote
and:line
expressions, but I believe a lot of uses already handle QuoteNode and LineNumberNode so it shouldn't be too bad in practice. For example, we have already been returning (perhaps by mistake) these node types fromparse
.This "fixes" #23661 by making the new behavior official. The more uniform representation should be worth it.