class Bpl::ModifiesCorrection

Public Instance Methods

run!(program) click to toggle source
# File lib/bpl/passes/annotation/modifies_correction.rb, line 7
def run! program
  program.declarations.each do |proc|
    next unless proc.is_a?(ProcedureDeclaration)
    proc.specifications.dup.each do |sp|
      sp.remove if sp.is_a?(ModifiesClause)
    end if proc.body
    mods = modification.modifies[proc]
    proc.append_children(:specifications,
      bpl("modifies #{mods.to_a.sort * ", "};")) unless mods.empty?
    invalidates :resolution
  end
end