public ACastUnaryExpIR consNextElementCall(STypeIR iteratorType, String iteratorName, STypeIR elementType, String nextElementMethod) { ACastUnaryExpIR cast = new ACastUnaryExpIR(); cast.setType(elementType.clone()); cast.setExp(consInstanceCall(iteratorType, iteratorName, elementType.clone(), nextElementMethod)); return cast; }
/** * 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); }
/** * Returns a deep clone of this {@link ACastUnaryExpIR} node. * @return a deep clone of this {@link ACastUnaryExpIR} node */ public ACastUnaryExpIR clone() { return new ACastUnaryExpIR( _sourceNode, _tag, _metaData, cloneNode(_type), cloneNode(_exp) ); }
public boolean isUndefined(SExpIR exp) { if (exp instanceof ACastUnaryExpIR) { return isUndefined(((ACastUnaryExpIR) exp).getExp()); } else if (exp instanceof AUndefinedExpIR) { return true; } else { return false; } } }
/** * Essentially this.toString().equals(o.toString()). **/ @Override public boolean equals(Object o) { if (o != null && o instanceof ACastUnaryExpIR) { return toString().equals(o.toString()); } return false; }
@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()); } }
public ACastUnaryExpIR consNextElementCall(STypeIR instanceType, String instance, String member, ACompSeqExpIR seqComp) throws AnalysisException { STypeIR elementType = getSeqTypeCloned(seqComp).getSeqOf(); SExpIR nextCall = consInstanceCall(instanceType, instance, elementType.clone(), member); ACastUnaryExpIR cast = new ACastUnaryExpIR(); cast.setType(elementType.clone()); cast.setExp(nextCall); return cast; }
/** * 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); }
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; }
/** * Creates a deep clone of this {@link ACastUnaryExpIR} node while putting all * old node-new node relations in the map {@code oldToNewMap}. * @param oldToNewMap the map filled with the old node-new node relation * @return a deep clone of this {@link ACastUnaryExpIR} node */ public ACastUnaryExpIR clone(Map<INode,INode> oldToNewMap) { ACastUnaryExpIR node = new ACastUnaryExpIR( _sourceNode, _tag, _metaData, cloneNode(_type, oldToNewMap), cloneNode(_exp, oldToNewMap) ); oldToNewMap.put(this, node); return node; }
private ACastUnaryExpIR consObjId() { String paramName = tracePrefixes.callStmMethodParamName(); AIdentifierVarExpIR idVar = assist.getInfo().getExpAssistant().consIdVar(paramName, new AObjectTypeIR()); ACastUnaryExpIR castVar = new ACastUnaryExpIR(); castVar.setType(assist.consClassType(traceEnclosingClass)); castVar.setExp(idVar); return castVar; }
/** * 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); }
recObj = ((ACastUnaryExpIR) recObj).getExp();
private SExpIR correctTypes(SExpIR exp, STypeIR castedType) throws AnalysisException { if ((exp.getType() instanceof AUnknownTypeIR || exp.getType() instanceof AUnionTypeIR || castedType instanceof ATemplateTypeIR) && !(exp instanceof ACastUnaryExpIR) && !exp.getType().equals(castedType)) { ACastUnaryExpIR casted = new ACastUnaryExpIR(); casted.setType(castedType.clone()); casted.setExp(exp.clone()); transAssistant.replaceNodeWith(exp, casted); return casted; } return exp; }
/** * 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; }
public AAssignToExpStmIR castFieldObj(AAssignToExpStmIR assign, AFieldExpIR target, STypeIR possibleType) { ACastUnaryExpIR cast = new ACastUnaryExpIR(); cast.setType(possibleType.clone()); cast.setExp(target.getObject().clone()); AAssignToExpStmIR assignCopy = assign.clone(); AFieldExpIR fieldCopy = target.clone(); transAssistant.replaceNodeWith(fieldCopy.getObject(), cast); transAssistant.replaceNodeWith(assignCopy.getTarget(), fieldCopy); return assignCopy; }
/** * 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; }
private AFieldNumberExpIR consTupleFieldExp( AIdentifierVarExpIR tuplePatternVar, int i, STypeIR currentType, boolean cast) { AFieldNumberExpIR fieldNumberExp = new AFieldNumberExpIR(); fieldNumberExp.setType(currentType.clone()); if (!cast) { fieldNumberExp.setTuple(tuplePatternVar.clone()); } else { ACastUnaryExpIR castedExp = new ACastUnaryExpIR(); castedExp.setType(tuplePatternVar.getType().clone()); castedExp.setExp(tuplePatternVar.clone()); fieldNumberExp.setTuple(castedExp); } fieldNumberExp.setField(new Long(1 + i)); return fieldNumberExp; }
private SExpIR consRecFieldExp(AIdentifierVarExpIR patternVar, int i, STypeIR currentType, boolean cast) { ARecordTypeIR recordType = (ARecordTypeIR) patternVar.getType(); AFieldDeclIR recordField = transAssistant.getInfo().getAssistantManager().getDeclAssistant().getFieldDecl(transAssistant.getInfo().getClasses(), recordType, i); String fieldName = recordField.getName(); AFieldExpIR fieldExp = consRecFieldExp(patternVar, currentType, fieldName); if (cast) { ACastUnaryExpIR casted = new ACastUnaryExpIR(); casted.setType(recordType.clone()); casted.setExp(fieldExp.getObject()); fieldExp.setObject(casted); } return fieldExp; }