class Bpl::AssertionLocalization

Public Instance Methods

run!(program) click to toggle source
# File lib/bpl/passes/analysis/assertion_localization.rb, line 8
def run! program
  work_list = []
  program.declarations.each do |decl|
    next unless decl.is_a?(ProcedureDeclaration)
    has_assert[decl] = decl.any? {|elem| elem.is_a?(AssertStatement)}
    work_list << decl if has_assert[decl]
  end
  until work_list.empty?
    decl = work_list.shift
    has_assert[decl] = true
    call_graph_construction.callers[decl].each do |caller|
      work_list |= [caller] unless has_assert[caller]
    end
  end
end