diff --git a/lib/rbs/location_aux.rb b/lib/rbs/location_aux.rb index 769f91c5c..bfdabce92 100644 --- a/lib/rbs/location_aux.rb +++ b/lib/rbs/location_aux.rb @@ -5,7 +5,12 @@ class Location def inspect rks = each_required_key.to_a ops = each_optional_key.to_a.map {|x| "?#{x}" } - "#<#{self.class}:#{self.__id__} buffer=#{buffer.name}, start=#{start_line}:#{start_column}, pos=#{start_pos}...#{end_pos}, children=#{(rks + ops).join(",")} source='#{source.lines.first&.chomp}'>" + src = if source.length <= 1 + source.inspect + else + source.each_line.first&.chomp&.inspect + end + "#<#{self.class}:#{self.__id__} buffer=#{buffer.name}, start=#{start_line}:#{start_column}, pos=#{start_pos}...#{end_pos}, children=#{(rks + ops).join(",")} source=#{src}>" end def self.new(buffer_ = nil, start_pos_ = nil, end_pos_ = nil, buffer: nil, start_pos: nil, end_pos: nil) diff --git a/test/rbs/location_test.rb b/test/rbs/location_test.rb index e2f25be00..ffcbe2b44 100644 --- a/test/rbs/location_test.rb +++ b/test/rbs/location_test.rb @@ -75,6 +75,20 @@ def test_location_to_s assert_equal "foo.rbs:1:0...2:3", loc.to_s end + def test_location_inspect + content = '' + loc = Location.new(Buffer.new(name: "trivia.rbs", content: content), 0, content.length) + assert_include loc.inspect, "source=\"\"" + + content = "\n" + loc = Location.new(Buffer.new(name: "trivia.rbs", content: content), 0, content.length) + assert_include loc.inspect, "source=\"\\n\"" + + content = "class Foo\n def foo: () -> void\nend\n" + loc = Location.new(Buffer.new(name: "foo.rbs", content: content), 0, content.length) + assert_include loc.inspect, "source=\"class Foo\"" + end + private def buffer(content: nil)