/** * Called by the {@link ALetBeStBindingTraceDefinition} node from {@link ALetBeStBindingTraceDefinition#apply(IAnalysis)}. * @param node the calling {@link ALetBeStBindingTraceDefinition} node */ public void caseALetBeStBindingTraceDefinition(ALetBeStBindingTraceDefinition node, Q question) throws AnalysisException { _visitedNodes.add(node); inALetBeStBindingTraceDefinition(node, question); if(node.getBind() != null && !_visitedNodes.contains(node.getBind())) { node.getBind().apply(this, question); } if(node.getStexp() != null && !_visitedNodes.contains(node.getStexp())) { node.getStexp().apply(this, question); } if(node.getBody() != null && !_visitedNodes.contains(node.getBody())) { node.getBody().apply(this, question); } if(node.getDef() != null && !_visitedNodes.contains(node.getDef())) { node.getDef().apply(this, question); } outALetBeStBindingTraceDefinition(node, question); }
@Override public PType caseALetBeStBindingTraceDefinition( ALetBeStBindingTraceDefinition node, TypeCheckInfo question) throws AnalysisException { Entry<PType, AMultiBindListDefinition> res = typecheckLetBeSt(node, node.getLocation(), node.getBind(), node.getStexp(), node.getBody(), question); node.setDef(res.getValue()); return res.getKey(); }
/** * Creates a new complete constructor {@code ALetBeStBindingTraceDefinition} node with the given nodes as children. * @deprecated This method should not be used, use AstFactory instead. * The basic child nodes are removed from their previous parents. * @param bind_ the {@link PMultipleBind} node for the {@code bind} child of this {@link ALetBeStBindingTraceDefinition} node * @param stexp_ the {@link PExp} node for the {@code stexp} child of this {@link ALetBeStBindingTraceDefinition} node * @param body_ the {@link PTraceDefinition} node for the {@code body} child of this {@link ALetBeStBindingTraceDefinition} node * @param def_ the {@link AMultiBindListDefinition} node for the {@code def} child of this {@link ALetBeStBindingTraceDefinition} node */ public ALetBeStBindingTraceDefinition(ILexLocation location_, PMultipleBind bind_, PExp stexp_, PTraceDefinition body_, AMultiBindListDefinition def_) { super(location_); this.setBind(bind_); this.setStexp(stexp_); this.setBody(body_); this.setDef(def_); }
for (PMultipleBind mb : term.getDef().getBindings()) node.alternatives.add(new StatementTraceNode(AstFactory.newASkipStm(term.getLocation()))); return node; Context evalContext = new Context(af, term.getLocation(), "TRACE", ctxt); NameValuePairList nvpl = quantifiers.next(); boolean matches = true; && (term.getStexp() == null || term.getStexp().apply(VdmRuntime.getExpressionEvaluator(), evalContext).boolValue(ctxt))) TraceNode exp = term.getBody().apply(THIS, evalContext); exp.addVariables(new TraceVariableList(evalContext, af.createPDefinitionAssistant().getDefinitions(term.getDef()))); node.alternatives.add(exp); throw new ContextException((ValueException) e, term.getLocation());
@Override public void caseALetBeStBindingTraceDefinition( ALetBeStBindingTraceDefinition node) throws AnalysisException { if (!proceed(node)) { return; } node.getDef().apply(this); DefinitionInfo defInfo = new DefinitionInfo(node.getDef().getDefs(), af); openScope(defInfo, node); if (node.getStexp() != null) { node.getStexp().apply(this); } node.getBody().apply(this); endScope(defInfo); }
@Override public STraceDeclIR caseALetBeStBindingTraceDefinition( ALetBeStBindingTraceDefinition node, IRInfo question) throws AnalysisException { PMultipleBind multipleBind = node.getBind(); if (!(multipleBind instanceof ASetMultipleBind)) { question.addUnsupportedNode(node, "Generation of the let be st trace definition" + " is only supported for a multiple set bind. Got: " + multipleBind); return null; } PTraceDefinition body = node.getBody(); PExp stExp = node.getStexp(); SMultipleBindIR multipleBindCg = multipleBind.apply(question.getMultipleBindVisitor(), question); if (!(multipleBindCg instanceof ASetMultipleBindIR)) { return null; } STraceDeclIR bodyCg = body.apply(question.getTraceDeclVisitor(), question); SExpIR stExpCg = stExp != null ? stExp.apply(question.getExpVisitor(), question) : null; ALetBeStBindingTraceDeclIR letBeSt = new ALetBeStBindingTraceDeclIR(); letBeSt.setBind((ASetMultipleBindIR) multipleBindCg); letBeSt.setBody(bodyCg); letBeSt.setStExp(stExpCg); ; return letBeSt; }
/** * Called by the {@link ALetBeStBindingTraceDefinition} node from {@link ALetBeStBindingTraceDefinition#apply(IAnalysis)}. * @param node the calling {@link ALetBeStBindingTraceDefinition} node */ public void caseALetBeStBindingTraceDefinition(ALetBeStBindingTraceDefinition node) throws AnalysisException { _visitedNodes.add(node); inALetBeStBindingTraceDefinition(node); if(node.getBind() != null && !_visitedNodes.contains(node.getBind())) { node.getBind().apply(this); } if(node.getStexp() != null && !_visitedNodes.contains(node.getStexp())) { node.getStexp().apply(this); } if(node.getBody() != null && !_visitedNodes.contains(node.getBody())) { node.getBody().apply(this); } if(node.getDef() != null && !_visitedNodes.contains(node.getDef())) { node.getDef().apply(this); } outALetBeStBindingTraceDefinition(node); }
/** * Called by the {@link ALetBeStBindingTraceDefinition} node from {@link ALetBeStBindingTraceDefinition#apply(IPOFAnalysis)}. * @param node the calling {@link ALetBeStBindingTraceDefinition} node */ public void caseALetBeStBindingTraceDefinition(ALetBeStBindingTraceDefinition node) throws AnalysisException { _visitedNodes.add(node); inALetBeStBindingTraceDefinition(node); if(node.getBind() != null && !_visitedNodes.contains(node.getBind())) { node.getBind().apply(this); } if(node.getStexp() != null && !_visitedNodes.contains(node.getStexp())) { node.getStexp().apply(this); } if(node.getBody() != null && !_visitedNodes.contains(node.getBody())) { node.getBody().apply(this); } if(node.getDef() != null && !_visitedNodes.contains(node.getDef())) { node.getDef().apply(this); } outALetBeStBindingTraceDefinition(node); }
/** * Called by the {@link ALetBeStBindingTraceDefinition} node from {@link ALetBeStBindingTraceDefinition#apply(IAnalysis)}. * @param node the calling {@link ALetBeStBindingTraceDefinition} node */ public A caseALetBeStBindingTraceDefinition(ALetBeStBindingTraceDefinition node) throws AnalysisException { _visitedNodes.add(node); A retVal = createNewReturnValue(node); mergeReturns(retVal,inALetBeStBindingTraceDefinition(node)); if(node.getBind() != null && !_visitedNodes.contains(node.getBind())) { mergeReturns(retVal,node.getBind().apply(this)); } if(node.getStexp() != null && !_visitedNodes.contains(node.getStexp())) { mergeReturns(retVal,node.getStexp().apply(this)); } if(node.getBody() != null && !_visitedNodes.contains(node.getBody())) { mergeReturns(retVal,node.getBody().apply(this)); } if(node.getDef() != null && !_visitedNodes.contains(node.getDef())) { mergeReturns(retVal,node.getDef().apply(this)); } mergeReturns(retVal,outALetBeStBindingTraceDefinition(node)); return retVal; }
/** * Called by the {@link ALetBeStBindingTraceDefinition} node from {@link ALetBeStBindingTraceDefinition#apply(IAnalysis)}. * @param node the calling {@link ALetBeStBindingTraceDefinition} node */ public A caseALetBeStBindingTraceDefinition(ALetBeStBindingTraceDefinition node, Q question) throws AnalysisException { _visitedNodes.add(node); A retVal = createNewReturnValue(node, question); mergeReturns(retVal,inALetBeStBindingTraceDefinition(node, question)); if(node.getBind() != null && !_visitedNodes.contains(node.getBind())) { mergeReturns(retVal,node.getBind().apply(this, question)); } if(node.getStexp() != null && !_visitedNodes.contains(node.getStexp())) { mergeReturns(retVal,node.getStexp().apply(this, question)); } if(node.getBody() != null && !_visitedNodes.contains(node.getBody())) { mergeReturns(retVal,node.getBody().apply(this, question)); } if(node.getDef() != null && !_visitedNodes.contains(node.getDef())) { mergeReturns(retVal,node.getDef().apply(this, question)); } mergeReturns(retVal,outALetBeStBindingTraceDefinition(node, question)); return retVal; }