[ruby/prism] Fix parser translator tokens for comment-only file

In https://github.com/ruby/prism/pull/3393 I made a mistake.
When there is no previous token, it wraps around to -1. Oops

Additionally, if a comment has no newline then the offset should be kept as is

3c266f1de4
This commit is contained in:
Earlopain 2025-01-12 15:11:00 +01:00 committed by git
parent f56f3eaae5
commit d0deec3ef3
3 changed files with 23 additions and 5 deletions

View file

@ -281,14 +281,14 @@ module Prism
location = range(token.location.start_offset, lexed[index][0].location.end_offset)
index += 1
else
value.chomp!
location = range(token.location.start_offset, token.location.end_offset - 1)
is_at_eol = value.chomp!.nil?
location = range(token.location.start_offset, token.location.end_offset + (is_at_eol ? 0 : -1))
prev_token = lexed[index - 2][0]
prev_token = lexed[index - 2][0] if index - 2 >= 0
next_token = lexed[index][0]
is_inline_comment = prev_token.location.start_line == token.location.start_line
if is_inline_comment && !COMMENT_CONTINUATION_TYPES.include?(next_token&.type)
is_inline_comment = prev_token&.location&.start_line == token.location.start_line
if is_inline_comment && !is_at_eol && !COMMENT_CONTINUATION_TYPES.include?(next_token&.type)
tokens << [:tCOMMENT, [value, location]]
nl_location = range(token.location.end_offset - 1, token.location.end_offset)