Skip to content

Commit

Permalink
[ruby/yarp] Print locations using line / col instead of offsets
Browse files Browse the repository at this point in the history
This commit changes printing of locations to use the format
(start_line,start_column)-(end_line,end_column) instead of using
offsets.

ruby/prism@c078696e22
  • Loading branch information
jemmaissroff authored and matzbot committed Sep 20, 2023
1 parent 0a630fa commit d6abca4
Show file tree
Hide file tree
Showing 912 changed files with 30,188 additions and 30,188 deletions.
8 changes: 4 additions & 4 deletions lib/yarp.rb
Expand Up @@ -71,7 +71,7 @@ def copy(**options)

# Returns a string representation of this location.
def inspect
"#<YARP::Location @start_offset=#{@start_offset} @length=#{@length}>"
"#<YARP::Location @start_offset=#{@start_offset} @length=#{@length} start_line=#{start_line}>"
end

# The source code that this location represents.
Expand Down Expand Up @@ -117,7 +117,7 @@ def deconstruct_keys(keys)
end

def pretty_print(q)
q.text("(#{start_offset}...#{end_offset})")
q.text("(#{start_line},#{start_column})-(#{end_line},#{end_column}))")
end

def ==(other)
Expand Down Expand Up @@ -333,7 +333,7 @@ def <<(line)
# for any given node.
def header(node)
output = +"@ #{node.class.name.split("::").last} ("
output << "location: (#{node.location.start_offset}...#{node.location.end_offset})"
output << "location: (#{node.location.start_line},#{node.location.start_column})-(#{node.location.end_line},#{node.location.end_column})"
output << ", newline: true" if node.newline?
output << ")\n"
output
Expand All @@ -357,7 +357,7 @@ def list(prefix, nodes)
# Generates a string that represents a location field on a node.
def location(value)
if value
"(#{value.start_offset}...#{value.end_offset}) = #{value.slice.inspect}"
"(#{value.start_line},#{value.start_column})-(#{value.end_line},#{value.end_column}) = #{value.slice.inspect}"
else
"∅"
end
Expand Down
188 changes: 94 additions & 94 deletions test/yarp/snapshots/alias.txt
@@ -1,173 +1,173 @@
@ ProgramNode (location: (0...199))
@ ProgramNode (location: (1,0)-(23,11))
├── locals: []
└── statements:
@ StatementsNode (location: (0...199))
@ StatementsNode (location: (1,0)-(23,11))
└── body: (length: 12)
├── @ AliasMethodNode (location: (0...15))
├── @ AliasMethodNode (location: (1,0)-(1,15))
│ ├── new_name:
│ │ @ SymbolNode (location: (6...10))
│ │ ├── opening_loc: (6...7) = ":"
│ │ ├── value_loc: (7...10) = "foo"
│ │ @ SymbolNode (location: (1,6)-(1,10))
│ │ ├── opening_loc: (1,6)-(1,7) = ":"
│ │ ├── value_loc: (1,7)-(1,10) = "foo"
│ │ ├── closing_loc: ∅
│ │ └── unescaped: "foo"
│ ├── old_name:
│ │ @ SymbolNode (location: (11...15))
│ │ ├── opening_loc: (11...12) = ":"
│ │ ├── value_loc: (12...15) = "bar"
│ │ @ SymbolNode (location: (1,11)-(1,15))
│ │ ├── opening_loc: (1,11)-(1,12) = ":"
│ │ ├── value_loc: (1,12)-(1,15) = "bar"
│ │ ├── closing_loc: ∅
│ │ └── unescaped: "bar"
│ └── keyword_loc: (0...5) = "alias"
├── @ AliasMethodNode (location: (17...38))
│ └── keyword_loc: (1,0)-(1,5) = "alias"
├── @ AliasMethodNode (location: (3,0)-(3,21))
│ ├── new_name:
│ │ @ SymbolNode (location: (23...30))
│ │ ├── opening_loc: (23...26) = "%s["
│ │ ├── value_loc: (26...29) = "abc"
│ │ ├── closing_loc: (29...30) = "]"
│ │ @ SymbolNode (location: (3,6)-(3,13))
│ │ ├── opening_loc: (3,6)-(3,9) = "%s["
│ │ ├── value_loc: (3,9)-(3,12) = "abc"
│ │ ├── closing_loc: (3,12)-(3,13) = "]"
│ │ └── unescaped: "abc"
│ ├── old_name:
│ │ @ SymbolNode (location: (31...38))
│ │ ├── opening_loc: (31...34) = "%s["
│ │ ├── value_loc: (34...37) = "def"
│ │ ├── closing_loc: (37...38) = "]"
│ │ @ SymbolNode (location: (3,14)-(3,21))
│ │ ├── opening_loc: (3,14)-(3,17) = "%s["
│ │ ├── value_loc: (3,17)-(3,20) = "def"
│ │ ├── closing_loc: (3,20)-(3,21) = "]"
│ │ └── unescaped: "def"
│ └── keyword_loc: (17...22) = "alias"
├── @ AliasMethodNode (location: (40...59))
│ └── keyword_loc: (3,0)-(3,5) = "alias"
├── @ AliasMethodNode (location: (5,0)-(5,19))
│ ├── new_name:
│ │ @ SymbolNode (location: (46...52))
│ │ ├── opening_loc: (46...48) = ":'"
│ │ ├── value_loc: (48...51) = "abc"
│ │ ├── closing_loc: (51...52) = "'"
│ │ @ SymbolNode (location: (5,6)-(5,12))
│ │ ├── opening_loc: (5,6)-(5,8) = ":'"
│ │ ├── value_loc: (5,8)-(5,11) = "abc"
│ │ ├── closing_loc: (5,11)-(5,12) = "'"
│ │ └── unescaped: "abc"
│ ├── old_name:
│ │ @ SymbolNode (location: (53...59))
│ │ ├── opening_loc: (53...55) = ":'"
│ │ ├── value_loc: (55...58) = "def"
│ │ ├── closing_loc: (58...59) = "'"
│ │ @ SymbolNode (location: (5,13)-(5,19))
│ │ ├── opening_loc: (5,13)-(5,15) = ":'"
│ │ ├── value_loc: (5,15)-(5,18) = "def"
│ │ ├── closing_loc: (5,18)-(5,19) = "'"
│ │ └── unescaped: "def"
│ └── keyword_loc: (40...45) = "alias"
├── @ AliasMethodNode (location: (61...84))
│ └── keyword_loc: (5,0)-(5,5) = "alias"
├── @ AliasMethodNode (location: (7,0)-(7,23))
│ ├── new_name:
│ │ @ InterpolatedSymbolNode (location: (67...77))
│ │ ├── opening_loc: (67...69) = ":\""
│ │ @ InterpolatedSymbolNode (location: (7,6)-(7,16))
│ │ ├── opening_loc: (7,6)-(7,8) = ":\""
│ │ ├── parts: (length: 2)
│ │ │ ├── @ StringNode (location: (69...72))
│ │ │ ├── @ StringNode (location: (7,8)-(7,11))
│ │ │ │ ├── flags: ∅
│ │ │ │ ├── opening_loc: ∅
│ │ │ │ ├── content_loc: (69...72) = "abc"
│ │ │ │ ├── content_loc: (7,8)-(7,11) = "abc"
│ │ │ │ ├── closing_loc: ∅
│ │ │ │ └── unescaped: "abc"
│ │ │ └── @ EmbeddedStatementsNode (location: (72...76))
│ │ │ ├── opening_loc: (72...74) = "\#{"
│ │ │ └── @ EmbeddedStatementsNode (location: (7,11)-(7,15))
│ │ │ ├── opening_loc: (7,11)-(7,13) = "\#{"
│ │ │ ├── statements:
│ │ │ │ @ StatementsNode (location: (74...75))
│ │ │ │ @ StatementsNode (location: (7,13)-(7,14))
│ │ │ │ └── body: (length: 1)
│ │ │ │ └── @ IntegerNode (location: (74...75))
│ │ │ │ └── @ IntegerNode (location: (7,13)-(7,14))
│ │ │ │ └── flags: decimal
│ │ │ └── closing_loc: (75...76) = "}"
│ │ └── closing_loc: (76...77) = "\""
│ │ │ └── closing_loc: (7,14)-(7,15) = "}"
│ │ └── closing_loc: (7,15)-(7,16) = "\""
│ ├── old_name:
│ │ @ SymbolNode (location: (78...84))
│ │ ├── opening_loc: (78...80) = ":'"
│ │ ├── value_loc: (80...83) = "def"
│ │ ├── closing_loc: (83...84) = "'"
│ │ @ SymbolNode (location: (7,17)-(7,23))
│ │ ├── opening_loc: (7,17)-(7,19) = ":'"
│ │ ├── value_loc: (7,19)-(7,22) = "def"
│ │ ├── closing_loc: (7,22)-(7,23) = "'"
│ │ └── unescaped: "def"
│ └── keyword_loc: (61...66) = "alias"
├── @ AliasGlobalVariableNode (location: (86...97))
│ └── keyword_loc: (7,0)-(7,5) = "alias"
├── @ AliasGlobalVariableNode (location: (9,0)-(9,11))
│ ├── new_name:
│ │ @ GlobalVariableReadNode (location: (92...94))
│ │ @ GlobalVariableReadNode (location: (9,6)-(9,8))
│ │ └── name: :$a
│ ├── old_name:
│ │ @ BackReferenceReadNode (location: (95...97))
│ └── keyword_loc: (86...91) = "alias"
├── @ AliasMethodNode (location: (99...112))
│ │ @ BackReferenceReadNode (location: (9,9)-(9,11))
│ └── keyword_loc: (9,0)-(9,5) = "alias"
├── @ AliasMethodNode (location: (11,0)-(11,13))
│ ├── new_name:
│ │ @ SymbolNode (location: (105...108))
│ │ @ SymbolNode (location: (11,6)-(11,9))
│ │ ├── opening_loc: ∅
│ │ ├── value_loc: (105...108) = "foo"
│ │ ├── value_loc: (11,6)-(11,9) = "foo"
│ │ ├── closing_loc: ∅
│ │ └── unescaped: "foo"
│ ├── old_name:
│ │ @ SymbolNode (location: (109...112))
│ │ @ SymbolNode (location: (11,10)-(11,13))
│ │ ├── opening_loc: ∅
│ │ ├── value_loc: (109...112) = "bar"
│ │ ├── value_loc: (11,10)-(11,13) = "bar"
│ │ ├── closing_loc: ∅
│ │ └── unescaped: "bar"
│ └── keyword_loc: (99...104) = "alias"
├── @ AliasGlobalVariableNode (location: (114...129))
│ └── keyword_loc: (11,0)-(11,5) = "alias"
├── @ AliasGlobalVariableNode (location: (13,0)-(13,15))
│ ├── new_name:
│ │ @ GlobalVariableReadNode (location: (120...124))
│ │ @ GlobalVariableReadNode (location: (13,6)-(13,10))
│ │ └── name: :$foo
│ ├── old_name:
│ │ @ GlobalVariableReadNode (location: (125...129))
│ │ @ GlobalVariableReadNode (location: (13,11)-(13,15))
│ │ └── name: :$bar
│ └── keyword_loc: (114...119) = "alias"
├── @ AliasMethodNode (location: (131...143))
│ └── keyword_loc: (13,0)-(13,5) = "alias"
├── @ AliasMethodNode (location: (15,0)-(15,12))
│ ├── new_name:
│ │ @ SymbolNode (location: (137...140))
│ │ @ SymbolNode (location: (15,6)-(15,9))
│ │ ├── opening_loc: ∅
│ │ ├── value_loc: (137...140) = "foo"
│ │ ├── value_loc: (15,6)-(15,9) = "foo"
│ │ ├── closing_loc: ∅
│ │ └── unescaped: "foo"
│ ├── old_name:
│ │ @ SymbolNode (location: (141...143))
│ │ @ SymbolNode (location: (15,10)-(15,12))
│ │ ├── opening_loc: ∅
│ │ ├── value_loc: (141...143) = "if"
│ │ ├── value_loc: (15,10)-(15,12) = "if"
│ │ ├── closing_loc: ∅
│ │ └── unescaped: "if"
│ └── keyword_loc: (131...136) = "alias"
├── @ AliasMethodNode (location: (145...158))
│ └── keyword_loc: (15,0)-(15,5) = "alias"
├── @ AliasMethodNode (location: (17,0)-(17,13))
│ ├── new_name:
│ │ @ SymbolNode (location: (151...154))
│ │ @ SymbolNode (location: (17,6)-(17,9))
│ │ ├── opening_loc: ∅
│ │ ├── value_loc: (151...154) = "foo"
│ │ ├── value_loc: (17,6)-(17,9) = "foo"
│ │ ├── closing_loc: ∅
│ │ └── unescaped: "foo"
│ ├── old_name:
│ │ @ SymbolNode (location: (155...158))
│ │ @ SymbolNode (location: (17,10)-(17,13))
│ │ ├── opening_loc: ∅
│ │ ├── value_loc: (155...158) = "<=>"
│ │ ├── value_loc: (17,10)-(17,13) = "<=>"
│ │ ├── closing_loc: ∅
│ │ └── unescaped: "<=>"
│ └── keyword_loc: (145...150) = "alias"
├── @ AliasMethodNode (location: (160...175))
│ └── keyword_loc: (17,0)-(17,5) = "alias"
├── @ AliasMethodNode (location: (19,0)-(19,15))
│ ├── new_name:
│ │ @ SymbolNode (location: (166...169))
│ │ ├── opening_loc: (166...167) = ":"
│ │ ├── value_loc: (167...169) = "=="
│ │ @ SymbolNode (location: (19,6)-(19,9))
│ │ ├── opening_loc: (19,6)-(19,7) = ":"
│ │ ├── value_loc: (19,7)-(19,9) = "=="
│ │ ├── closing_loc: ∅
│ │ └── unescaped: "=="
│ ├── old_name:
│ │ @ SymbolNode (location: (170...175))
│ │ ├── opening_loc: (170...171) = ":"
│ │ ├── value_loc: (171...175) = "eql?"
│ │ @ SymbolNode (location: (19,10)-(19,15))
│ │ ├── opening_loc: (19,10)-(19,11) = ":"
│ │ ├── value_loc: (19,11)-(19,15) = "eql?"
│ │ ├── closing_loc: ∅
│ │ └── unescaped: "eql?"
│ └── keyword_loc: (160...165) = "alias"
├── @ AliasMethodNode (location: (177...186))
│ └── keyword_loc: (19,0)-(19,5) = "alias"
├── @ AliasMethodNode (location: (21,0)-(21,9))
│ ├── new_name:
│ │ @ SymbolNode (location: (183...184))
│ │ @ SymbolNode (location: (21,6)-(21,7))
│ │ ├── opening_loc: ∅
│ │ ├── value_loc: (183...184) = "A"
│ │ ├── value_loc: (21,6)-(21,7) = "A"
│ │ ├── closing_loc: ∅
│ │ └── unescaped: "A"
│ ├── old_name:
│ │ @ SymbolNode (location: (185...186))
│ │ @ SymbolNode (location: (21,8)-(21,9))
│ │ ├── opening_loc: ∅
│ │ ├── value_loc: (185...186) = "B"
│ │ ├── value_loc: (21,8)-(21,9) = "B"
│ │ ├── closing_loc: ∅
│ │ └── unescaped: "B"
│ └── keyword_loc: (177...182) = "alias"
└── @ AliasMethodNode (location: (188...199))
│ └── keyword_loc: (21,0)-(21,5) = "alias"
└── @ AliasMethodNode (location: (23,0)-(23,11))
├── new_name:
│ @ SymbolNode (location: (194...196))
│ ├── opening_loc: (194...195) = ":"
│ ├── value_loc: (195...196) = "A"
│ @ SymbolNode (location: (23,6)-(23,8))
│ ├── opening_loc: (23,6)-(23,7) = ":"
│ ├── value_loc: (23,7)-(23,8) = "A"
│ ├── closing_loc: ∅
│ └── unescaped: "A"
├── old_name:
│ @ SymbolNode (location: (197...199))
│ ├── opening_loc: (197...198) = ":"
│ ├── value_loc: (198...199) = "B"
│ @ SymbolNode (location: (23,9)-(23,11))
│ ├── opening_loc: (23,9)-(23,10) = ":"
│ ├── value_loc: (23,10)-(23,11) = "B"
│ ├── closing_loc: ∅
│ └── unescaped: "B"
└── keyword_loc: (188...193) = "alias"
└── keyword_loc: (23,0)-(23,5) = "alias"

0 comments on commit d6abca4

Please sign in to comment.