/** * Called by the {@link ANewExpIR} node from {@link ANewExpIR#apply(IIsaAnalysis)}. * @param node the calling {@link ANewExpIR} node */ public void caseANewExpIR(ANewExpIR node) throws AnalysisException { _visitedNodes.add(node); inANewExpIR(node); if(node.getType() != null && !_visitedNodes.contains(node.getType())) { node.getType().apply(this); } if(node.getName() != null && !_visitedNodes.contains(node.getName())) { node.getName().apply(this); } { List<SExpIR> copy = new ArrayList<SExpIR>(node.getArgs()); for( SExpIR e : copy) { if(!_visitedNodes.contains(e)) { e.apply(this); } } } outANewExpIR(node); }
/** * Called by the {@link ANewExpIR} node from {@link ANewExpIR#apply(IAnalysis)}. * @param node the calling {@link ANewExpIR} node */ public void caseANewExpIR(ANewExpIR node, Q question) throws AnalysisException { _visitedNodes.add(node); inANewExpIR(node, question); if(node.getType() != null && !_visitedNodes.contains(node.getType())) { node.getType().apply(this, question); } if(node.getName() != null && !_visitedNodes.contains(node.getName())) { node.getName().apply(this, question); } { List<SExpIR> copy = new ArrayList<SExpIR>(node.getArgs()); for( SExpIR e : copy) { if(!_visitedNodes.contains(e)) { e.apply(this, question); } } } outANewExpIR(node, question); }
/** * Called by the {@link ANewExpIR} node from {@link ANewExpIR#apply(IAnalysis)}. * @param node the calling {@link ANewExpIR} node */ public void caseANewExpIR(ANewExpIR node) throws AnalysisException { _visitedNodes.add(node); inANewExpIR(node); if(node.getType() != null && !_visitedNodes.contains(node.getType())) { node.getType().apply(this); } if(node.getName() != null && !_visitedNodes.contains(node.getName())) { node.getName().apply(this); } { List<SExpIR> copy = new ArrayList<SExpIR>(node.getArgs()); for( SExpIR e : copy) { if(!_visitedNodes.contains(e)) { e.apply(this); } } } outANewExpIR(node); }
public ACallObjectExpStmIR consAddTraceVarCall(AIdentifierVarExpIR subject, AIdentifierVarExpIR t) { ANewExpIR newVar = new ANewExpIR(); newVar.setName(getTransAssist().consTypeNameForClass(traceTrans.getTracePrefixes().traceVarClassName())); newVar.setType(getTransAssist().consClassType(traceTrans.getTracePrefixes().traceVarClassName())); newVar.getArgs().add(getInfo().getExpAssistant().consStringLiteral(t.getName(), false)); newVar.getArgs().add(getInfo().getExpAssistant().consStringLiteral("" + getTransAssist().getInfo().getTypeAssistant().getVdmType(t.getType()), false)); newVar.getArgs().add(traceTrans.getToStringBuilder().toStringOf(t.clone())); return getTransAssist().consInstanceCallStm(subject.getType(), subject.getName(), traceTrans.getTracePrefixes().addVarFirstMethodName(), newVar); }
/** * Called by the {@link ANewExpIR} node from {@link ANewExpIR#apply(IAnalysis)}. * @param node the calling {@link ANewExpIR} node */ public A caseANewExpIR(ANewExpIR node) throws AnalysisException { _visitedNodes.add(node); A retVal = createNewReturnValue(node); mergeReturns(retVal,inANewExpIR(node)); if(node.getType() != null && !_visitedNodes.contains(node.getType())) { mergeReturns(retVal,node.getType().apply(this)); } if(node.getName() != null && !_visitedNodes.contains(node.getName())) { mergeReturns(retVal,node.getName().apply(this)); } { List<SExpIR> copy = new ArrayList<SExpIR>(node.getArgs()); for( SExpIR e : copy) { if(!_visitedNodes.contains(e)) { mergeReturns(retVal,e.apply(this)); } } } mergeReturns(retVal,outANewExpIR(node)); return retVal; }
private SExpIR getInitExp(AStateDeclIR stateDecl) { if (stateDecl.getInitExp() instanceof AEqualsBinaryExpIR) { AEqualsBinaryExpIR eqExp = (AEqualsBinaryExpIR) stateDecl.getInitExp(); return eqExp.getRight().clone(); } else { ANewExpIR defaultRecInit = new ANewExpIR(); defaultRecInit.setName(transAssistant.getTypeName(stateDecl)); defaultRecInit.setType(transAssistant.getRecType(stateDecl)); for (int i = 0; i < stateDecl.getFields().size(); i++) { defaultRecInit.getArgs().add(transAssistant.getInfo().getExpAssistant().consUndefinedExp()); } return defaultRecInit; } }
/** * Called by the {@link ANewExpIR} node from {@link ANewExpIR#apply(IAnalysis)}. * @param node the calling {@link ANewExpIR} node */ public A caseANewExpIR(ANewExpIR node, Q question) throws AnalysisException { _visitedNodes.add(node); A retVal = createNewReturnValue(node, question); mergeReturns(retVal,inANewExpIR(node, question)); if(node.getType() != null && !_visitedNodes.contains(node.getType())) { mergeReturns(retVal,node.getType().apply(this, question)); } if(node.getName() != null && !_visitedNodes.contains(node.getName())) { mergeReturns(retVal,node.getName().apply(this, question)); } { List<SExpIR> copy = new ArrayList<SExpIR>(node.getArgs()); for( SExpIR e : copy) { if(!_visitedNodes.contains(e)) { mergeReturns(retVal,e.apply(this, question)); } } } mergeReturns(retVal,outANewExpIR(node, question)); return retVal; }
protected ABlockStmIR consDecl(String classTypeName, String varName, SExpIR... args) { ATypeNameIR typeName = getTransAssist().consTypeNameForClass(classTypeName); AClassTypeIR classType = getTransAssist().consClassType(classTypeName); ANewExpIR newExp = new ANewExpIR(); newExp.setName(typeName); newExp.setType(classType); for (SExpIR arg : args) { newExp.getArgs().add(arg); } return getTransAssist().wrap(getTransAssist().consDecl(varName, classType.clone(), newExp)); }
newExp.setName(recordTypeCg.getName().clone()); LinkedList<SExpIR> newExpArgs = newExp.getArgs();
@Override public SExpIR caseANewExp(ANewExp node, IRInfo question) throws AnalysisException { String className = node.getClassdef().getName().getName(); ATypeNameIR typeName = new ATypeNameIR(); typeName.setDefiningClass(null); typeName.setName(className); PType type = node.getType(); LinkedList<PExp> nodeArgs = node.getArgs(); ANewExpIR newExp = new ANewExpIR(); STypeIR typeCg = type.apply(question.getTypeVisitor(), question); newExp.setType(typeCg); newExp.setName(typeName); LinkedList<SExpIR> newExpArgs = newExp.getArgs(); for (PExp arg : nodeArgs) { SExpIR argCg = arg.apply(question.getExpVisitor(), question); if (argCg != null) { newExpArgs.add(argCg); } else { return null; } } return newExp; }
newStmTraceNodeExp.getArgs().add(getInfo().getExpAssistant().consIdVar(callStmName, callStmType.clone()));
newExp.setType(returnType.clone()); newExp.setName(typeName.clone()); List<SExpIR> args = newExp.getArgs();
newexp.getArgs().add(new ASelfExpIR());
@Override public void inANewExpIR(ANewExpIR node) throws AnalysisException LinkedList<SExpIR> args = node.getArgs();