AntiAliasing: avoid rebuilding mutated objects when possible #1507
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.
AntiAliasing#mapApplication
used to "rebuild" the mutated object(s) from function calls where a reassignment could be possible.For instance, if we have:
Then before this PR,
mapApplication
would transformtest
as follows:This is due to applying each effect individually.
With this PR,
test
is transformed as follows:This in part resolves the issue when an
@opaque
function mutates an argument and uses the mutated argument in aensuring
, causing a discrepancy between the "updated" object used in theensuring
and the "rebuilt" object (for which we would like to use theensuring
property, but fail to do so; seevalid/OpaqueMutation
which used to fail).