Macro Expansion: Special case QuoteNode by Returns
ing the unpacked value rather than the QuoteNode itself.
#119
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.
Fixes #99.
This special case assumes that all non-Expr objects in an expression tree evaluate to themselves. This is a false assumption in the case of
QuoteNode(::Symbol)
.Additionally, this
Returns
gives the compiler slightly less information by inhibiting constant propagation of literals. Constant propagation of literals is usually bad (misleadingly low runtimes) in this case but this particular fix also results in@b 2 rand
and@b 1+1 rand
having different properties with the latter more constprop-able. I was not able to find a case where theReturns
is helpful.Returns was added in 4f8a8c8 to avoid compilation time and paired with the test
I expect the "no compilation" regression test to regress.