@Override public TraceNode caseATraceDefinitionTerm(ATraceDefinitionTerm node, Context question) throws AnalysisException { AlternativeTraceNode newNode = new AlternativeTraceNode(); for (PTraceDefinition term : node.getList()) { newNode.alternatives.add(term.apply(THIS, question)); // newNode.alternatives.add(PTraceDefinitionAssistantInterpreter.expand(term, ctxt)); } return newNode; }
@Override public PType caseABracketedExpressionTraceCoreDefinition( ABracketedExpressionTraceCoreDefinition node, TypeCheckInfo question) throws AnalysisException { for (ATraceDefinitionTerm term : node.getTerms()) { for (PTraceDefinition def : term.getList()) { def.apply(THIS, question); } } return null; }
/** * Called by the {@link ATraceDefinitionTerm} node from {@link ATraceDefinitionTerm#apply(IAnalysis)}. * @param node the calling {@link ATraceDefinitionTerm} node */ public void caseATraceDefinitionTerm(ATraceDefinitionTerm node, Q question) throws AnalysisException { _visitedNodes.add(node); inATraceDefinitionTerm(node, question); { List<PTraceDefinition> copy = new ArrayList<PTraceDefinition>(node.getList()); for( PTraceDefinition e : copy) { if(!_visitedNodes.contains(e)) { e.apply(this, question); } } } outATraceDefinitionTerm(node, question); }
/** * Called by the {@link ATraceDefinitionTerm} node from {@link ATraceDefinitionTerm#apply(IAnalysis)}. * @param node the calling {@link ATraceDefinitionTerm} node */ public void caseATraceDefinitionTerm(ATraceDefinitionTerm node) throws AnalysisException { _visitedNodes.add(node); inATraceDefinitionTerm(node); { List<PTraceDefinition> copy = new ArrayList<PTraceDefinition>(node.getList()); for( PTraceDefinition e : copy) { if(!_visitedNodes.contains(e)) { e.apply(this); } } } outATraceDefinitionTerm(node); }
/** * Called by the {@link ATraceDefinitionTerm} node from {@link ATraceDefinitionTerm#apply(IPOFAnalysis)}. * @param node the calling {@link ATraceDefinitionTerm} node */ public void caseATraceDefinitionTerm(ATraceDefinitionTerm node) throws AnalysisException { _visitedNodes.add(node); inATraceDefinitionTerm(node); { List<PTraceDefinition> copy = new ArrayList<PTraceDefinition>(node.getList()); for( PTraceDefinition e : copy) { if(!_visitedNodes.contains(e)) { e.apply(this); } } } outATraceDefinitionTerm(node); }
@Override public STermIR caseATraceDefinitionTerm(ATraceDefinitionTerm node, IRInfo question) throws AnalysisException { ATraceDeclTermIR termCg = new ATraceDeclTermIR(); for (PTraceDefinition traceDef : node.getList()) { STraceDeclIR traceDefCg = traceDef.apply(question.getTraceDeclVisitor(), question); if (traceDefCg != null) { termCg.getTraceDecls().add(traceDefCg); } else { return null; } } return termCg; } }
/** * Called by the {@link ATraceDefinitionTerm} node from {@link ATraceDefinitionTerm#apply(IAnalysis)}. * @param node the calling {@link ATraceDefinitionTerm} node */ public A caseATraceDefinitionTerm(ATraceDefinitionTerm node) throws AnalysisException { _visitedNodes.add(node); A retVal = createNewReturnValue(node); mergeReturns(retVal,inATraceDefinitionTerm(node)); { List<PTraceDefinition> copy = new ArrayList<PTraceDefinition>(node.getList()); for( PTraceDefinition e : copy) { if(!_visitedNodes.contains(e)) { mergeReturns(retVal,e.apply(this)); } } } mergeReturns(retVal,outATraceDefinitionTerm(node)); return retVal; }
/** * Called by the {@link ATraceDefinitionTerm} node from {@link ATraceDefinitionTerm#apply(IAnalysis)}. * @param node the calling {@link ATraceDefinitionTerm} node */ public A caseATraceDefinitionTerm(ATraceDefinitionTerm node, Q question) throws AnalysisException { _visitedNodes.add(node); A retVal = createNewReturnValue(node, question); mergeReturns(retVal,inATraceDefinitionTerm(node, question)); { List<PTraceDefinition> copy = new ArrayList<PTraceDefinition>(node.getList()); for( PTraceDefinition e : copy) { if(!_visitedNodes.contains(e)) { mergeReturns(retVal,e.apply(this, question)); } } } mergeReturns(retVal,outATraceDefinitionTerm(node, question)); return retVal; }
@Override public PType caseANamedTraceDefinition(ANamedTraceDefinition node, TypeCheckInfo question) throws AnalysisException { if (question.env.isVDMPP()) { question = new TypeCheckInfo(question.assistantFactory, new FlatEnvironment(question.assistantFactory, question.assistantFactory.createPDefinitionAssistant().getSelfDefinition(node), question.env), question.scope, question.qualifiers); } for (ATraceDefinitionTerm term : node.getTerms()) { typeCheck(term.getList(), THIS, new TypeCheckInfo(question.assistantFactory, question.env, NameScope.NAMESANDSTATE)); } // Mark node as used, as traces are not used anyway question.assistantFactory.createPDefinitionAssistant().markUsed(node); return null; }