Make language nodes immutable #1338
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.
We have code in our client that "deep freezes" all AST nodes. I think we could eliminate that if we just made AST nodes immutable by default. I only found one place where the gem is mutating nodes, but I guess all those "writer" methods are public API, so this PR might only be good for a major version release.
I separated this PR to two commits because I think avoiding mutation internally has merit on its own.