RubyParser: emit ASSIGNMENT_LIKE_METHOD_IDENTIFIERS #3296
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.
Previously, so-called assignment-like method identifiers (e.g.
foo2=
indef foo2=(x) ... end
) were being lexed as two separate tokens (LOCAL_VARIABLE_IDENTIFIER
andEQ
) and handled together in a parser rule. However, with the introduction of so-called endless methods, this separation could lead to wrong parse trees, as witnessed by #3270 .To resolve this ambiguity, we shall now gobble up the
EQ
token as part of the method name, emitting anASSIGNMENT_LIKE_METHOD_IDENTIFIER
token instead.Closes #3270