1 # frozen_string_literal: true
4 # Tracks which lines various code blocks have expanded to
5 # and which are still unexplored
7 def initialize(code_lines:)
8 @unvisited = code_lines.sort_by(&:indent_index)
10 @visited_lines.compare_by_identity
25 def visit_block(block)
26 block.lines.each do |line|
27 next if @visited_lines[line]
28 @visited_lines[line] = true
31 while @visited_lines[@unvisited.last]