Fix wrong native locations in optimized IR AST#15228
Merged
Conversation
This was referenced Jul 1, 2024
4f9bb72 to
7930290
Compare
Contributor
nikola-matic
left a comment
There was a problem hiding this comment.
Need to rebase & fix changelog clash.
7930290 to
84b89a5
Compare
nikola-matic
approved these changes
Jul 18, 2024
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Looks like
nativeSrcin the Yul AST always matches the unoptimized source, even when the AST represents the structure of the optimized one. It's not surprising since keeping locations updated through optimizations would be pretty inconvenient for very little value, but still, I don't think users are expecting this behavior and I'd consider it a bug. I guess one could argue that the unoptimized location is the truly "native" one, but I don't think this was ever intended and does not seem very useful, since those locations are already available in the unoptimized AST.The fix is to reparse the source again before generating the optimized AST.
Yul parsing is pretty fast so I did not bother optimizing this, but if we wanted to we could switch to not storing the IR AST and generating it on demand instead. It would save some memory too and I think that this feature is rarely used so no point in doing it eagerly.