ruby-changes:66759
From: Yusuke <ko1@a...>
Date: Tue, 13 Jul 2021 16:54:28 +0900 (JST)
Subject: [ruby-changes:66759] 5fd5d71a4b (master): [ruby/error_highlight] Support a file that has no final newline
https://git.ruby-lang.org/ruby.git/commit/?id=5fd5d71a4b From 5fd5d71a4b100fdeca55352a5441b095a1d82e16 Mon Sep 17 00:00:00 2001 From: Yusuke Endoh <mame@r...> Date: Tue, 13 Jul 2021 16:53:52 +0900 Subject: [ruby/error_highlight] Support a file that has no final newline https://github.com/ruby/error_highlight/commit/9d671284cb --- lib/error_highlight/base.rb | 1 + test/error_highlight/test_error_highlight.rb | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/lib/error_highlight/base.rb b/lib/error_highlight/base.rb index fc23508..696df76 100644 --- a/lib/error_highlight/base.rb +++ b/lib/error_highlight/base.rb @@ -35,6 +35,7 @@ module ErrorHighlight https://github.com/ruby/ruby/blob/trunk/lib/error_highlight/base.rb#L35 @fetch = -> (lineno, last_lineno = lineno) do snippet = @node.script_lines[lineno - 1 .. last_lineno - 1].join("") + snippet += "\n" unless snippet.end_with?("\n") # It require some work to support Unicode (or multibyte) characters. # Tentatively, we stop highlighting if the code snippet has non-ascii characters. diff --git a/test/error_highlight/test_error_highlight.rb b/test/error_highlight/test_error_highlight.rb index 071b3bf..03909bd 100644 --- a/test/error_highlight/test_error_highlight.rb +++ b/test/error_highlight/test_error_highlight.rb @@ -1016,4 +1016,20 @@ _ _ ^^^^^ https://github.com/ruby/ruby/blob/trunk/test/error_highlight/test_error_highlight.rb#L1016 load tmp.path end end + + def test_no_final_newline + tmp = Tempfile.new(["error_highlight_test", ".rb"]) + tmp << "1.time {}" + tmp.close(false) + + assert_error_message(NoMethodError, <<~END) do +undefined method `time' for 1:Integer + +1.time {} + ^^^^^ + END + + load tmp.path + end + end end -- cgit v1.1 -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/