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)
|
location = range(token.location.start_offset, lexed[index][0].location.end_offset)
|
||||||
index += 1
|
index += 1
|
||||||
else
|
else
|
||||||
value.chomp!
|
is_at_eol = value.chomp!.nil?
|
||||||
location = range(token.location.start_offset, token.location.end_offset - 1)
|
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]
|
next_token = lexed[index][0]
|
||||||
|
|
||||||
is_inline_comment = prev_token.location.start_line == token.location.start_line
|
is_inline_comment = prev_token&.location&.start_line == token.location.start_line
|
||||||
if is_inline_comment && !COMMENT_CONTINUATION_TYPES.include?(next_token&.type)
|
if is_inline_comment && !is_at_eol && !COMMENT_CONTINUATION_TYPES.include?(next_token&.type)
|
||||||
tokens << [:tCOMMENT, [value, location]]
|
tokens << [:tCOMMENT, [value, location]]
|
||||||
|
|
||||||
nl_location = range(token.location.end_offset - 1, token.location.end_offset)
|
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