Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fix an unexpected behavior for
Prism::Translation::Parser
This PR fixes an unexpected behavior for `Prism::Translation::Parser` when using `case`/`when`/`end` with `;` expression. ## Expected It returns the range of the semicolon even if there is a space before the semicolon: ```console $ bundle exec ruby -Ilib -rprism -rprism/translation/parser33 -ve \ 'p Prism::Translation::Parser33.parse("case foo when x; end").children.to_a[1].loc.begin' ruby 3.3.0 (2023-12-25 revision 5124f9ac75) [x86_64-darwin22] #<Parser::Source::Range (string) 15...16> $ bundle exec ruby -Ilib -rprism -rprism/translation/parser33 -ve \ 'p Prism::Translation::Parser33.parse("case foo when x ; end").children.to_a[1].loc.begin.source' ruby 3.3.0 (2023-12-25 revision 5124f9ac75) [x86_64-darwin22] ";" $ bundle exec ruby -Ilib -rprism -rprism/translation/parser33 -ve \ 'p Prism::Translation::Parser33.parse("case foo when x ; end").children.to_a[1].loc.begin' ruby 3.3.0 (2023-12-25 revision 5124f9ac75) [x86_64-darwin22] #<Parser::Source::Range (string) 16...17> $ bundle exec ruby -Ilib -rprism -rprism/translation/parser33 -ve \ 'p Prism::Translation::Parser33.parse("case foo when x; end").children.to_a[1].loc.begin.source' ruby 3.3.0 (2023-12-25 revision 5124f9ac75) [x86_64-darwin22] ";" ``` ## Actual It returns `nil` if there is a space before the semicolon: ```console $ bundle exec ruby -Ilib -rprism -rprism/translation/parser33 -ve \ 'p Prism::Translation::Parser33.parse("case foo when x; end").children.to_a[1].loc.begin' ruby 3.3.0 (2023-12-25 revision 5124f9ac75) [x86_64-darwin22] #<Parser::Source::Range (string) 15...16> $ bundle exec ruby -Ilib -rprism -rprism/translation/parser33 -ve \ 'p Prism::Translation::Parser33.parse("case foo when x ; end").children.to_a[1].loc.begin.source' ruby 3.3.0 (2023-12-25 revision 5124f9ac75) [x86_64-darwin22] ";" $ bundle exec ruby -Ilib -rprism -rprism/translation/parser33 -ve \ 'p Prism::Translation::Parser33.parse("case foo when x ; end").children.to_a[1].loc.begin' ruby 3.3.0 (2023-12-25 revision 5124f9ac75) [x86_64-darwin22] nil $ bundle exec ruby -Ilib -rprism -rprism/translation/parser33 -ve \ 'p Prism::Translation::Parser33.parse("case foo when x ; end").children.to_a[1].loc.begin.source' ruby 3.3.0 (2023-12-25 revision 5124f9ac75) [x86_64-darwin22] -e:1:in `<main>': undefined method `source' for nil (NoMethodError) p Prism::Translation::Parser33.parse("case foo when x ; end").children.to_a[1].loc.begin.source ^^^^^^^ ```
- Loading branch information