summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHParker <[email protected]>2023-08-22 10:53:39 -0700
committergit <[email protected]>2023-08-23 17:23:15 +0000
commit9aca3528aa1a1545468a508b02b77bc922bb7321 (patch)
tree34633cf611f52eec0f30bd05a79cf0c8b0b228dd
parent774845284fafd231be2208576da6669383f25998 (diff)
[ruby/yarp] Match EOF after newline behavior
in Ripper EOL after whitespace is returned as a on_nl node with the whitespace as the content https://github.com/ruby/yarp/commit/be16d1deed
-rw-r--r--lib/yarp/lex_compat.rb8
-rw-r--r--test/snapshots/indented_file_end.txt18
2 files changed, 26 insertions, 0 deletions
diff --git a/lib/yarp/lex_compat.rb b/lib/yarp/lex_compat.rb
index 7e1d9f3657..6442650931 100644
--- a/lib/yarp/lex_compat.rb
+++ b/lib/yarp/lex_compat.rb
@@ -630,6 +630,14 @@ module YARP
end
Token.new([[lineno, column], event, value, lex_state])
+
+ when :on_eof
+ prev_token = result_value[index-1][0]
+ if prev_token.type == :COMMENT && prev_token.location.end_offset < token.location.start_offset
+ tokens << Token.new([[lineno, 0], :on_nl, source.byteslice(result_value[index-1].first.location.end_offset...token.location.start_offset), lex_state])
+ end
+
+ Token.new([[lineno, column], event, value, lex_state])
else
Token.new([[lineno, column], event, value, lex_state])
end
diff --git a/test/snapshots/indented_file_end.txt b/test/snapshots/indented_file_end.txt
new file mode 100644
index 0000000000..513a7ab0f5
--- /dev/null
+++ b/test/snapshots/indented_file_end.txt
@@ -0,0 +1,18 @@
+ProgramNode(4...23)(
+ [],
+ StatementsNode(4...23)(
+ [DefNode(4...23)(
+ (8...10),
+ nil,
+ nil,
+ nil,
+ [],
+ (4...7),
+ nil,
+ nil,
+ nil,
+ nil,
+ (20...23)
+ )]
+ )
+)