package org.overture.pog.utility; import java.util.LinkedList; import org.overture.ast.analysis.AnalysisException; import org.overture.ast.analysis.QuestionAnswerAdaptor; import org.overture.ast.assistant.IAstAssistant; import org.overture.ast.definitions.PDefinition; import org.overture.pog.contexts.PONameContext; import org.overture.pog.obligation.ProofObligationList; import org.overture.pog.pub.IPOContextStack; import org.overture.pog.pub.IProofObligationList; import org.overture.typechecker.assistant.ITypeCheckerAssistantFactory; import org.overture.typechecker.assistant.definition.PDefinitionAssistantTC; public class PDefinitionAssistantPOG extends PDefinitionAssistantTC implements IAstAssistant { public PDefinitionAssistantPOG(ITypeCheckerAssistantFactory af) { super(af); } public IProofObligationList getProofObligations( LinkedList<? extends PDefinition> defs, QuestionAnswerAdaptor<IPOContextStack, ? extends IProofObligationList> pogVisitor, IPOContextStack ctxt) throws AnalysisException { IProofObligationList obligations = new ProofObligationList(); for (PDefinition d : defs) { ctxt.push(new PONameContext(getVariableNames(d))); obligations.addAll(d.apply(pogVisitor, ctxt)); ctxt.pop(); } return obligations; } }