private boolean isFieldRead(final AStateDeclIR stateDecl, AIdentifierVarExpIR node) { return !info.isSlStateRead(node) && !node.getName().equals(stateDecl.getName()); }
@Override public void caseAIdentifierVarExpIR(AIdentifierVarExpIR node) throws AnalysisException { if (localVarNames.contains(node.getName())) { getTransAssist().replaceNodeWith(node, storeAssistant.consStoreLookup(node)); } } });
private List<AMetaStmIR> consObjVarAsserts(SVarExpIR target, List<AIdentifierVarExpIR> objVars) { List<AMetaStmIR> objVarAsserts = new LinkedList<AMetaStmIR>(); if (objVars != null) { // All of them except the last for (int i = 0; i < objVars.size() - 1; i++) { addAsserts(objVarAsserts, objVars.get(i)); } if (!objVarAsserts.isEmpty()) { AIdentifierVarExpIR last = objVars.get(objVars.size() - 1); if (!target.getName().equals(last.getName())) { addAsserts(objVarAsserts, last); } } } Collections.reverse(objVarAsserts); return objVarAsserts; }
private boolean isFieldReadInPreOrPost(final AStateDeclIR stateDecl, AIdentifierVarExpIR node) { if (!inPreOrPost) { return false; } boolean matches = false; for (AFieldDeclIR f : stateDecl.getFields()) { if (f.getName().equals(node.getName())) { matches = true; break; } } return matches; }
public AMetaStmIR consAssert(AIdentifierVarExpIR var) { if (util.assertRec(var)) { ARecordTypeIR recType = (ARecordTypeIR) var.getType(); return invTrans.consMetaStm(util.consValidRecCheck(var, var.getName(), recType)); } else { return null; } } }
private AIfStmIR consMismatchCheck(AIdentifierVarExpIR successVar, SStmIR noMatchStm) { AIfStmIR ifCheck = new AIfStmIR(); ifCheck.setIfExp(transAssistant.consBoolCheck(successVar.getName(), true)); ifCheck.setThenStm(noMatchStm); return ifCheck; }
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); }
&& idConstNameMap.containsKey(((AIdentifierVarExpIR) arg).getName()))
public AAddrNotEqualsBinaryExpIR consParamNotNullComp( AIdentifierVarExpIR param) { AAddrNotEqualsBinaryExpIR fieldComparison = new AAddrNotEqualsBinaryExpIR(); fieldComparison.setType(new ABoolBasicTypeIR()); AIdentifierVarExpIR instanceField = new AIdentifierVarExpIR(); instanceField.setType(param.getType().clone()); instanceField.setIsLocal(true); instanceField.setName(param.getName()); fieldComparison.setLeft(instanceField); fieldComparison.setRight(info.getExpAssistant().consNullExp()); return fieldComparison; }
fieldName = ((AIdentifierVarExpIR) root).getName();
public SExpIR consStoreLookup(AIdentifierVarExpIR node, boolean noCast) { AClassTypeIR storeType = transAssistant.consClassType(tracePrefixes.storeClassName()); AIdentifierVarExpIR idArg = transAssistant.getInfo().getExpAssistant().consIdVar(idConstNameMap.get(node.getName()), new ANatNumericBasicTypeIR()); SExpIR call = transAssistant.consInstanceCall(storeType, tracePrefixes.storeVarName(), node.getType(), tracePrefixes.storeGetValueMethodName(), idArg); if (noCast || node.getType() instanceof AUnionTypeIR || node.getType() instanceof AUnknownTypeIR || node.getType() instanceof AObjectTypeIR) { return call; } else { ACastUnaryExpIR cast = new ACastUnaryExpIR(); cast.setType(node.getType().clone()); cast.setExp(call); return cast; } } }
@Override public AVarDeclIR getForLoopInit(AIdentifierVarExpIR setVar, List<SPatternIR> patterns, SPatternIR pattern) { iteratorName = transAssistant.getInfo().getTempVarNameGen().nextVarName(iteVarPrefixes.iterator()); String setName = setVar.getName(); AClassTypeIR iteratorType = transAssistant.consClassType(ITERATOR_TYPE); STypeIR setType = setVar.getType().clone(); SExpIR getIteratorCall = transAssistant.consInstanceCall(setType, setName, iteratorType.clone(), GET_ITERATOR); return transAssistant.getInfo().getDeclAssistant().consLocalVarDecl(iteratorType, transAssistant.getInfo().getPatternAssistant().consIdPattern(iteratorName), getIteratorCall); }
fieldExp.setTag(node.getTag()); fieldExp.setType(node.getType().clone()); setFieldNames(fieldExp, stateDecl, node.getName());