mirror of
https://github.com/ruby/ruby.git
synced 2025-09-15 16:44:01 +02:00
[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:
parent
f56f3eaae5
commit
d0deec3ef3
3 changed files with 23 additions and 5 deletions
|
@ -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)
|
||||
|
|
1
test/prism/fixtures/comment_single.txt
Normal file
1
test/prism/fixtures/comment_single.txt
Normal file
|
@ -0,0 +1 @@
|
|||
foo # Bar
|
17
test/prism/snapshots/comment_single.txt
Normal file
17
test/prism/snapshots/comment_single.txt
Normal file
|
@ -0,0 +1,17 @@
|
|||
@ ProgramNode (location: (1,0)-(1,3))
|
||||
├── flags: ∅
|
||||
├── locals: []
|
||||
└── statements:
|
||||
@ StatementsNode (location: (1,0)-(1,3))
|
||||
├── flags: ∅
|
||||
└── body: (length: 1)
|
||||
└── @ CallNode (location: (1,0)-(1,3))
|
||||
├── flags: newline, variable_call, ignore_visibility
|
||||
├── receiver: ∅
|
||||
├── call_operator_loc: ∅
|
||||
├── name: :foo
|
||||
├── message_loc: (1,0)-(1,3) = "foo"
|
||||
├── opening_loc: ∅
|
||||
├── arguments: ∅
|
||||
├── closing_loc: ∅
|
||||
└── block: ∅
|
Loading…
Add table
Add a link
Reference in a new issue