diff --git a/lib/dead_end/code_frontier.rb b/lib/dead_end/code_frontier.rb index d33f154..9e7ceca 100644 --- a/lib/dead_end/code_frontier.rb +++ b/lib/dead_end/code_frontier.rb @@ -54,6 +54,8 @@ def initialize(code_lines:) @code_lines = code_lines @frontier = InsertionSort.new @unvisited_lines = @code_lines.sort_by(&:indent_index) + @visited_lines = {} + @has_run = false @check_next = true end @@ -128,7 +130,13 @@ def expand? end def register_indent_block(block) - @unvisited_lines -= block.lines + block.lines.each do |line| + next if @visited_lines[line] + @visited_lines[line] = true + + index = @unvisited_lines.bsearch_index { |l| line.indent_index <=> l.indent_index } + @unvisited_lines.delete_at(index) + end self end