diff --git a/lib/error_highlight/core_ext.rb b/lib/error_highlight/core_ext.rb index 1cfc331..c3354f4 100644 --- a/lib/error_highlight/core_ext.rb +++ b/lib/error_highlight/core_ext.rb @@ -24,7 +24,7 @@ module CoreExt _, _, snippet, highlight = ErrorHighlight.formatter.message_for(spot).lines out += "\n | #{ snippet } #{ highlight }" else - out += "\n (cannot highlight method definition; try Ruby 4.0 or later)" + # do nothing end end ret << "\n" + out if out diff --git a/test/test_error_highlight.rb b/test/test_error_highlight.rb index d3ca990..ec39b1c 100644 --- a/test/test_error_highlight.rb +++ b/test/test_error_highlight.rb @@ -1450,26 +1450,28 @@ def exc.backtrace_locations = [] RubyVM::AbstractSyntaxTree.node_id_for_backtrace_location(exc.backtrace_locations.first) end - WRONG_NUMBER_OF_ARGUMENTS_LIENO = __LINE__ + 1 + def process_callee_snippet(str) + return str if MethodDefLocationSupported + + str.sub(/\n +\|.*\n +\^+\n\z/, "") + end + + WRONG_NUMBER_OF_ARGUMENTS_LINENO = __LINE__ + 1 def wrong_number_of_arguments_test(x, y) x + y end def test_wrong_number_of_arguments_for_method lineno = __LINE__ - assert_error_message(ArgumentError, <<~END) do + assert_error_message(ArgumentError, process_callee_snippet(<<~END)) do wrong number of arguments (given 1, expected 2) (ArgumentError) - caller: #{ __FILE__ }:#{ lineno + 16 } + caller: #{ __FILE__ }:#{ lineno + 12 } | wrong_number_of_arguments_test(1) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - callee: #{ __FILE__ }:#{ WRONG_NUMBER_OF_ARGUMENTS_LIENO } - #{ - MethodDefLocationSupported ? - "| def wrong_number_of_arguments_test(x, y) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^" : - "(cannot highlight method definition; try Ruby 4.0 or later)" - } + callee: #{ __FILE__ }:#{ WRONG_NUMBER_OF_ARGUMENTS_LINENO } + | def wrong_number_of_arguments_test(x, y) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ END wrong_number_of_arguments_test(1) @@ -1483,19 +1485,15 @@ def keyword_test(kw1:, kw2:, kw3:) def test_missing_keyword lineno = __LINE__ - assert_error_message(ArgumentError, <<~END) do + assert_error_message(ArgumentError, process_callee_snippet(<<~END)) do missing keyword: :kw3 (ArgumentError) - caller: #{ __FILE__ }:#{ lineno + 16 } + caller: #{ __FILE__ }:#{ lineno + 12 } | keyword_test(kw1: 1, kw2: 2) ^^^^^^^^^^^^ callee: #{ __FILE__ }:#{ KEYWORD_TEST_LINENO } - #{ - MethodDefLocationSupported ? - "| def keyword_test(kw1:, kw2:, kw3:) - ^^^^^^^^^^^^" : - "(cannot highlight method definition; try Ruby 4.0 or later)" - } + | def keyword_test(kw1:, kw2:, kw3:) + ^^^^^^^^^^^^ END keyword_test(kw1: 1, kw2: 2) @@ -1504,19 +1502,15 @@ def test_missing_keyword def test_missing_keywords # multiple missing keywords lineno = __LINE__ - assert_error_message(ArgumentError, <<~END) do + assert_error_message(ArgumentError, process_callee_snippet(<<~END)) do missing keywords: :kw2, :kw3 (ArgumentError) - caller: #{ __FILE__ }:#{ lineno + 16 } + caller: #{ __FILE__ }:#{ lineno + 12 } | keyword_test(kw1: 1) ^^^^^^^^^^^^ callee: #{ __FILE__ }:#{ KEYWORD_TEST_LINENO } - #{ - MethodDefLocationSupported ? - "| def keyword_test(kw1:, kw2:, kw3:) - ^^^^^^^^^^^^" : - "(cannot highlight method definition; try Ruby 4.0 or later)" - } + | def keyword_test(kw1:, kw2:, kw3:) + ^^^^^^^^^^^^ END keyword_test(kw1: 1) @@ -1525,19 +1519,15 @@ def test_missing_keywords # multiple missing keywords def test_unknown_keyword lineno = __LINE__ - assert_error_message(ArgumentError, <<~END) do + assert_error_message(ArgumentError, process_callee_snippet(<<~END)) do unknown keyword: :kw4 (ArgumentError) - caller: #{ __FILE__ }:#{ lineno + 16 } + caller: #{ __FILE__ }:#{ lineno + 12 } | keyword_test(kw1: 1, kw2: 2, kw3: 3, kw4: 4) ^^^^^^^^^^^^ callee: #{ __FILE__ }:#{ KEYWORD_TEST_LINENO } - #{ - MethodDefLocationSupported ? - "| def keyword_test(kw1:, kw2:, kw3:) - ^^^^^^^^^^^^" : - "(cannot highlight method definition; try Ruby 4.0 or later)" - } + | def keyword_test(kw1:, kw2:, kw3:) + ^^^^^^^^^^^^ END keyword_test(kw1: 1, kw2: 2, kw3: 3, kw4: 4) @@ -1546,19 +1536,15 @@ def test_unknown_keyword def test_unknown_keywords lineno = __LINE__ - assert_error_message(ArgumentError, <<~END) do + assert_error_message(ArgumentError, process_callee_snippet(<<~END)) do unknown keywords: :kw4, :kw5 (ArgumentError) - caller: #{ __FILE__ }:#{ lineno + 16 } + caller: #{ __FILE__ }:#{ lineno + 12 } | keyword_test(kw1: 1, kw2: 2, kw3: 3, kw4: 4, kw5: 5) ^^^^^^^^^^^^ callee: #{ __FILE__ }:#{ KEYWORD_TEST_LINENO } - #{ - MethodDefLocationSupported ? - "| def keyword_test(kw1:, kw2:, kw3:) - ^^^^^^^^^^^^" : - "(cannot highlight method definition; try Ruby 4.0 or later)" - } + | def keyword_test(kw1:, kw2:, kw3:) + ^^^^^^^^^^^^ END keyword_test(kw1: 1, kw2: 2, kw3: 3, kw4: 4, kw5: 5) @@ -1576,19 +1562,15 @@ def wrong_number_of_arguments_test2( def test_wrong_number_of_arguments_for_method2 lineno = __LINE__ - assert_error_message(ArgumentError, <<~END) do + assert_error_message(ArgumentError, process_callee_snippet(<<~END)) do wrong number of arguments (given 1, expected 3) (ArgumentError) - caller: #{ __FILE__ }:#{ lineno + 16 } + caller: #{ __FILE__ }:#{ lineno + 12 } | wrong_number_of_arguments_test2(1) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ callee: #{ __FILE__ }:#{ WRONG_NUBMER_OF_ARGUMENTS_TEST2_LINENO } - #{ - MethodDefLocationSupported ? - "| def wrong_number_of_arguments_test2( - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^" : - "(cannot highlight method definition; try Ruby 4.0 or later)" - } + | def wrong_number_of_arguments_test2( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ END wrong_number_of_arguments_test2(1) @@ -1598,19 +1580,15 @@ def test_wrong_number_of_arguments_for_method2 def test_wrong_number_of_arguments_for_lambda_literal v = -> {} lineno = __LINE__ - assert_error_message(ArgumentError, <<~END) do + assert_error_message(ArgumentError, process_callee_snippet(<<~END)) do wrong number of arguments (given 1, expected 0) (ArgumentError) - caller: #{ __FILE__ }:#{ lineno + 16 } + caller: #{ __FILE__ }:#{ lineno + 12 } | v.call(1) ^^^^^ callee: #{ __FILE__ }:#{ lineno - 1 } - #{ - MethodDefLocationSupported ? - "| v = -> {} - ^^" : - "(cannot highlight method definition; try Ruby 4.0 or later)" - } + | v = -> {} + ^^ END v.call(1) @@ -1620,19 +1598,15 @@ def test_wrong_number_of_arguments_for_lambda_literal def test_wrong_number_of_arguments_for_lambda_method v = lambda { } lineno = __LINE__ - assert_error_message(ArgumentError, <<~END) do + assert_error_message(ArgumentError, process_callee_snippet(<<~END)) do wrong number of arguments (given 1, expected 0) (ArgumentError) - caller: #{ __FILE__ }:#{ lineno + 16 } + caller: #{ __FILE__ }:#{ lineno + 12 } | v.call(1) ^^^^^ callee: #{ __FILE__ }:#{ lineno - 1 } - #{ - MethodDefLocationSupported ? - "| v = lambda { } - ^" : - "(cannot highlight method definition; try Ruby 4.0 or later)" - } + | v = lambda { } + ^ END v.call(1) @@ -1646,19 +1620,15 @@ def test_wrong_number_of_arguments_for_lambda_method def test_wrong_number_of_arguments_for_define_method lineno = __LINE__ - assert_error_message(ArgumentError, <<~END) do + assert_error_message(ArgumentError, process_callee_snippet(<<~END)) do wrong number of arguments (given 1, expected 2) (ArgumentError) - caller: #{ __FILE__ }:#{ lineno + 16 } + caller: #{ __FILE__ }:#{ lineno + 12 } | define_method_test(1) ^^^^^^^^^^^^^^^^^^ callee: #{ __FILE__ }:#{ DEFINE_METHOD_TEST_LINENO } - #{ - MethodDefLocationSupported ? - "| define_method :define_method_test do |x, y| - ^^" : - "(cannot highlight method definition; try Ruby 4.0 or later)" - } + | define_method :define_method_test do |x, y| + ^^ END define_method_test(1) @@ -1742,19 +1712,15 @@ def self . baz(x:) def test_singleton_method_with_spacing_missing_keyword lineno = __LINE__ - assert_error_message(ArgumentError, <<~END) do + assert_error_message(ArgumentError, process_callee_snippet(<<~END)) do missing keyword: :x (ArgumentError) - caller: #{ __FILE__ }:#{ lineno + 16 } + caller: #{ __FILE__ }:#{ lineno + 12 } | SingletonMethodWithSpacing.baz ^^^^ callee: #{ __FILE__ }:#{ SingletonMethodWithSpacing::LINENO } - #{ - MethodDefLocationSupported ? - "| def self . baz(x:) - ^^^^^" : - "(cannot highlight method definition; try Ruby 4.0 or later)" - } + | def self . baz(x:) + ^^^^^ END SingletonMethodWithSpacing.baz @@ -1770,19 +1736,15 @@ def self.run(shop_id:, param1:) def test_singleton_method_multiple_missing_keywords lineno = __LINE__ - assert_error_message(ArgumentError, <<~END) do + assert_error_message(ArgumentError, process_callee_snippet(<<~END)) do missing keywords: :shop_id, :param1 (ArgumentError) - caller: #{ __FILE__ }:#{ lineno + 16 } + caller: #{ __FILE__ }:#{ lineno + 12 } | SingletonMethodMultipleKwargs.run ^^^^ callee: #{ __FILE__ }:#{ SingletonMethodMultipleKwargs::LINENO } - #{ - MethodDefLocationSupported ? - "| def self.run(shop_id:, param1:) - ^^^^" : - "(cannot highlight method definition; try Ruby 4.0 or later)" - } + | def self.run(shop_id:, param1:) + ^^^^ END SingletonMethodMultipleKwargs.run