Skip to content

Commit fb92f80

Browse files
committed
Use Prism::Node#tunnel to optimize search in Prism.node_for
1 parent 130def8 commit fb92f80

File tree

1 file changed

+2
-1
lines changed

1 file changed

+2
-1
lines changed

lib/prism/parse_result.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -935,8 +935,9 @@ def self.node_for(callable)
935935
root = parse_result.value
936936
start_offset = parse_result.source.line_and_character_column_to_byte_offset(start_line, start_column)
937937
end_offset = parse_result.source.line_and_character_column_to_byte_offset(end_line, end_column)
938+
start_byte_column = start_offset - parse_result.source.line_start(start_offset)
938939

939-
found = root.breadth_first_search do |node|
940+
found = root.tunnel(start_line, start_byte_column).reverse.find do |node|
940941
case node
941942
when DefNode
942943
node.start_offset == start_offset && node.end_offset == end_offset

0 commit comments

Comments
 (0)