class Covered::Source
def expand(node, coverage, level = 0)
def expand(node, coverage, level = 0) if node.is_a? Parser::AST::Node if ignore?(node) # coverage.annotate(node.location.line, "ignoring #{node.type}") elsif node.type == :begin # if last_child = node.children&.last # coverage.counts[last_child.location.line] ||= 0 # end expand(node.children, coverage, level + 1) elsif node.type == :send if ignore_method?(node.children[1]) # coverage.annotate(node.location.line, "ignoring #{node.type}") return else # coverage.annotate(node.location.line, "accepting selector #{node.type}") coverage.counts[node.location.selector.line] ||= 0 end elsif executable?(node) # coverage.annotate(node.location.line, "executable #{node.type}") coverage.counts[node.location.line] ||= 0 end if ignore_children?(node) # coverage.annotate(node.location.line, "ignoring #{node.type} children") else expand(node.children, coverage, level + 1) end elsif node.is_a? Array node.each do |child| expand(child, coverage, level) end else return false end end