diff --git a/lib/irb/color.rb b/lib/irb/color.rb index 3e9b59532..1fdf51994 100644 --- a/lib/irb/color.rb +++ b/lib/irb/color.rb @@ -258,6 +258,11 @@ def visit_alias_method_node(node) super end + def visit_implicit_node(_node) + # Label of implicit nodes are colored as LABEL in visit_symbol_node. + # We need to prevent value part from being colored with another type. + end + def visit_call_node(node) if node.call_operator_loc.nil? && OPERATORS.include?(node.name) # Operators should not be colored as method call diff --git a/test/irb/test_color.rb b/test/irb/test_color.rb index 5cb036549..98301b278 100644 --- a/test/irb/test_color.rb +++ b/test/irb/test_color.rb @@ -137,6 +137,7 @@ def test_colorize_code 'ENV' => "#{BLUE}#{BOLD}#{UNDERLINE}ENV#{CLEAR}", 'f do end' => "#{CYAN}f#{CLEAR} #{GREEN}do#{CLEAR} #{GREEN}end#{CLEAR}", 'f true do end' => "#{CYAN}f#{CLEAR} #{CYAN}#{BOLD}true#{CLEAR} #{GREEN}do#{CLEAR} #{GREEN}end#{CLEAR}", + '{"foo": 1, bar:, BAZ:}' => "{#{MAGENTA}\"foo\":#{CLEAR} #{BLUE}#{BOLD}1#{CLEAR}, #{MAGENTA}bar:#{CLEAR}, #{MAGENTA}BAZ:#{CLEAR}}", } tests.each do |code, result|