/** * Returns a deep clone of this {@link AMetaStmIR} node. * @return a deep clone of this {@link AMetaStmIR} node */ public AMetaStmIR clone() { return new AMetaStmIR( _sourceNode, _tag, _metaData ); }
public boolean equal(AMetaStmIR left, AMetaStmIR right) { if (left.getMetaData().size() != right.getMetaData().size()) { return false; } for (int i = 0; i < left.getMetaData().size(); i++) { String currentLeft = left.getMetaData().get(i).value; String currentRight = right.getMetaData().get(i).value; if (!currentLeft.equals(currentRight)) { return false; } } return true; } }
/** * Essentially this.toString().equals(o.toString()). **/ @Override public boolean equals(Object o) { if (o != null && o instanceof AMetaStmIR) { return toString().equals(o.toString()); } return false; }
private void tcTraceTest(TypePredDecorator assertTr) { for (TcExpInfo currentInfo : tcExpInfo) { AbstractTypeInfo typeInfo = assertTr.getTypePredUtil().findTypeInfo(currentInfo.getFormalParamType()); String enclosingClass = currentInfo.getTraceEnclosingClass(); String javaRootPackage = getJavaSettings().getJavaRootPackage(); SClassDeclIR clazz = getJavaGen().getInfo().getDeclAssistant().findClass(getJavaGen().getInfo().getClasses(), enclosingClass); NameGen nameGen = new NameGen(clazz); String expRef = currentInfo.getExpRef(); String checkStr = typeInfo.consCheckExp(enclosingClass, javaRootPackage, expRef, nameGen); currentInfo.getTypeCheck().setMetaData(annotator.consMetaData("//@ " + JML_ASSERT_ANNOTATION + " " + checkStr + ";")); } }
/** * Creates a deep clone of this {@link AMetaStmIR} 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 AMetaStmIR} node */ public AMetaStmIR clone(Map<INode,INode> oldToNewMap) { AMetaStmIR node = new AMetaStmIR( _sourceNode, _tag, _metaData ); oldToNewMap.put(this, node); return node; }
private AMetaStmIR consTypeCheckExp(SVarExpIR arg, STypeIR formalParamType, String traceEnclosingClass, StoreAssistant storeAssistant) { /** * Don't do anything with 'tc' yet. Later it will be replaced with a proper dynamic type check */ AMetaStmIR tc = new AMetaStmIR(); tcExpInfo.add(new TcExpInfo(arg.getName(), formalParamType, tc, traceEnclosingClass)); return tc; }
public AMetaStmIR consMetaStm(String str) { AMetaStmIR assertion = new AMetaStmIR(); jmlGen.getAnnotator().appendMetaData(assertion, jmlGen.getAnnotator().consMetaData(str)); return assertion; }
protected AMetaStmIR consInvChecksStm(boolean val, ADefaultClassDeclIR encClass) { AMetaStmIR setStm = new AMetaStmIR(); String setStmStr = String.format(JmlGenerator.JML_SET_INV_CHECKS, this.jmlGen.getAnnotator().consInvChecksOnNameEncClass(encClass), val); List<ClonableString> setMetaData = jmlGen.getAnnotator().consMetaData(setStmStr); jmlGen.getAnnotator().appendMetaData(setStm, setMetaData); return setStm; }
public List<AMetaStmIR> consAssertStm(AbstractTypeInfo invTypes, ADefaultClassDeclIR encClass, SVarExpIR var, INode node, RecClassInfo recInfo) { boolean inAccessor = node != null && recInfo != null && recInfo.inAccessor(node); List<AMetaStmIR> asserts = new LinkedList<>(); List<String> assertStrs = consJmlCheck(encClass, null, JmlGenerator.JML_ASSERT_ANNOTATION, inAccessor, invTypes, var); for (String a : assertStrs) { AMetaStmIR assertStm = new AMetaStmIR(); List<ClonableString> assertMetaData = handler.getJmlGen().getAnnotator().consMetaData(a); handler.getJmlGen().getAnnotator().appendMetaData(assertStm, assertMetaData); asserts.add(assertStm); } return asserts; }
public AMetaStmIR consVarNotNullAssert(String varName) { AMetaStmIR assertStm = new AMetaStmIR(); List<ClonableString> assertMetaData = handler.getJmlGen().getAnnotator().consMetaData("//@ assert " + varName + " != null;"); handler.getJmlGen().getAnnotator().appendMetaData(assertStm, assertMetaData); return assertStm; }