public boolean isUndefined(SExpIR exp) { if (exp instanceof ACastUnaryExpIR) { return isUndefined(((ACastUnaryExpIR) exp).getExp()); } else if (exp instanceof AUndefinedExpIR) { return true; } else { return false; } } }
/** * Called by the {@link ACastUnaryExpIR} node from {@link ACastUnaryExpIR#apply(IIsaAnalysis)}. * @param node the calling {@link ACastUnaryExpIR} node */ public void caseACastUnaryExpIR(ACastUnaryExpIR node) throws AnalysisException { _visitedNodes.add(node); inACastUnaryExpIR(node); if(node.getType() != null && !_visitedNodes.contains(node.getType())) { node.getType().apply(this); } if(node.getExp() != null && !_visitedNodes.contains(node.getExp())) { node.getExp().apply(this); } outACastUnaryExpIR(node); }
/** * Called by the {@link ACastUnaryExpIR} node from {@link ACastUnaryExpIR#apply(IAnalysis)}. * @param node the calling {@link ACastUnaryExpIR} node */ public void caseACastUnaryExpIR(ACastUnaryExpIR node) throws AnalysisException { _visitedNodes.add(node); inACastUnaryExpIR(node); if(node.getType() != null && !_visitedNodes.contains(node.getType())) { node.getType().apply(this); } if(node.getExp() != null && !_visitedNodes.contains(node.getExp())) { node.getExp().apply(this); } outACastUnaryExpIR(node); }
/** * Called by the {@link ACastUnaryExpIR} node from {@link ACastUnaryExpIR#apply(IAnalysis)}. * @param node the calling {@link ACastUnaryExpIR} node */ public void caseACastUnaryExpIR(ACastUnaryExpIR node, Q question) throws AnalysisException { _visitedNodes.add(node); inACastUnaryExpIR(node, question); if(node.getType() != null && !_visitedNodes.contains(node.getType())) { node.getType().apply(this, question); } if(node.getExp() != null && !_visitedNodes.contains(node.getExp())) { node.getExp().apply(this, question); } outACastUnaryExpIR(node, question); }
@Override public void caseACallObjectExpStmIR(ACallObjectExpStmIR node) throws AnalysisException { if (node.getObj() instanceof SVarExpIR) { SVarExpIR obj = (SVarExpIR) node.getObj(); handleStateUpdate(node, obj); } else if (node.getObj() instanceof ACastUnaryExpIR) { ACastUnaryExpIR cast = (ACastUnaryExpIR) node.getObj(); if (cast.getExp() instanceof SVarExpIR) { SVarExpIR obj = (SVarExpIR) cast.getExp(); handleStateUpdate(node, obj); } else { log.error("Expected subject of cast expression to be a variable expression at this point. Got: " + cast.getExp()); } } else { log.error("Expected object of call object statement " + " to be a variable or cast expression by now. Got: " + node.getObj()); } }
/** * Called by the {@link ACastUnaryExpIR} node from {@link ACastUnaryExpIR#apply(IAnalysis)}. * @param node the calling {@link ACastUnaryExpIR} node */ public A caseACastUnaryExpIR(ACastUnaryExpIR node, Q question) throws AnalysisException { _visitedNodes.add(node); A retVal = createNewReturnValue(node, question); mergeReturns(retVal,inACastUnaryExpIR(node, question)); if(node.getType() != null && !_visitedNodes.contains(node.getType())) { mergeReturns(retVal,node.getType().apply(this, question)); } if(node.getExp() != null && !_visitedNodes.contains(node.getExp())) { mergeReturns(retVal,node.getExp().apply(this, question)); } mergeReturns(retVal,outACastUnaryExpIR(node, question)); return retVal; }
/** * Called by the {@link ACastUnaryExpIR} node from {@link ACastUnaryExpIR#apply(IAnalysis)}. * @param node the calling {@link ACastUnaryExpIR} node */ public A caseACastUnaryExpIR(ACastUnaryExpIR node) throws AnalysisException { _visitedNodes.add(node); A retVal = createNewReturnValue(node); mergeReturns(retVal,inACastUnaryExpIR(node)); if(node.getType() != null && !_visitedNodes.contains(node.getType())) { mergeReturns(retVal,node.getType().apply(this)); } if(node.getExp() != null && !_visitedNodes.contains(node.getExp())) { mergeReturns(retVal,node.getExp().apply(this)); } mergeReturns(retVal,outACastUnaryExpIR(node)); return retVal; }
public boolean simpleRecSetCallOutsideAtomic(ACallObjectExpStmIR node) { if (handler.getInvTrans().getJmlGen().getJavaGen().getInfo().getStmAssistant().inAtomic(node)) { return false; } SExpIR obj = node.getObj(); if (!(obj.getType() instanceof ARecordTypeIR)) { return false; } if (obj instanceof SVarExpIR) { return true; } if (obj instanceof ACastUnaryExpIR && ((ACastUnaryExpIR) obj).getExp() instanceof SVarExpIR) { return true; } return false; }
recObj = ((ACastUnaryExpIR) recObj).getExp();