public boolean isRecordDecl(ATypeDeclIR node) { return (node.getDecl() instanceof ARecordDeclIR); } }
public boolean genDecl(ATypeDeclIR node) { return !(node.getDecl() instanceof ANamedTypeDeclIR); }
public List<ARecordDeclIR> getRecords(SClassDeclIR definingClass) { List<ARecordDeclIR> records = new LinkedList<ARecordDeclIR>(); for (ATypeDeclIR typeDecl : definingClass.getTypeDecls()) { SDeclIR decl = typeDecl.getDecl(); if (!(decl instanceof ARecordDeclIR)) { continue; } ARecordDeclIR recordDecl = (ARecordDeclIR) decl; records.add(recordDecl); } return records; }
public List<ARecordDeclIR> getRecords(List<IRStatus<PIR>> ast) { List<ARecordDeclIR> records = new LinkedList<ARecordDeclIR>(); for (IRStatus<ADefaultClassDeclIR> classStatus : IRStatus.extract(ast, ADefaultClassDeclIR.class)) { for (ATypeDeclIR typeDecl : classStatus.getIrNode().getTypeDecls()) { if (typeDecl.getDecl() instanceof ARecordDeclIR) { records.add((ARecordDeclIR) typeDecl.getDecl()); } } } return records; }
public List<AMethodDeclIR> getNamedTypeInvMethods(ADefaultClassDeclIR clazz) { List<AMethodDeclIR> invDecls = new LinkedList<AMethodDeclIR>(); for (ATypeDeclIR typeDecl : clazz.getTypeDecls()) { if (typeDecl.getDecl() instanceof ANamedTypeDeclIR) { AMethodDeclIR m = getInvMethod(typeDecl); if (m != null) { invDecls.add(m); } } } return invDecls; }
public ARecordDeclIR findRecord(SClassDeclIR definingClass, String recordName) { for (ATypeDeclIR typeDecl : definingClass.getTypeDecls()) { SDeclIR decl = typeDecl.getDecl(); if (!(decl instanceof ARecordDeclIR)) { continue; } ARecordDeclIR recordDecl = (ARecordDeclIR) decl; if (recordDecl.getName().equals(recordName)) { return recordDecl; } } return null; }
/** * Called by the {@link ATypeDeclIR} node from {@link ATypeDeclIR#apply(IAnalysis)}. * @param node the calling {@link ATypeDeclIR} node */ public void caseATypeDeclIR(ATypeDeclIR node) throws AnalysisException { _visitedNodes.add(node); inATypeDeclIR(node); if(node.getInv() != null && !_visitedNodes.contains(node.getInv())) { node.getInv().apply(this); } if(node.getDecl() != null && !_visitedNodes.contains(node.getDecl())) { node.getDecl().apply(this); } outATypeDeclIR(node); }
/** * Called by the {@link ATypeDeclIR} node from {@link ATypeDeclIR#apply(IIsaAnalysis)}. * @param node the calling {@link ATypeDeclIR} node */ public void caseATypeDeclIR(ATypeDeclIR node) throws AnalysisException { _visitedNodes.add(node); inATypeDeclIR(node); if(node.getInv() != null && !_visitedNodes.contains(node.getInv())) { node.getInv().apply(this); } if(node.getDecl() != null && !_visitedNodes.contains(node.getDecl())) { node.getDecl().apply(this); } outATypeDeclIR(node); }
/** * Called by the {@link ATypeDeclIR} node from {@link ATypeDeclIR#apply(IAnalysis)}. * @param node the calling {@link ATypeDeclIR} node */ public void caseATypeDeclIR(ATypeDeclIR node, Q question) throws AnalysisException { _visitedNodes.add(node); inATypeDeclIR(node, question); if(node.getInv() != null && !_visitedNodes.contains(node.getInv())) { node.getInv().apply(this, question); } if(node.getDecl() != null && !_visitedNodes.contains(node.getDecl())) { node.getDecl().apply(this, question); } outATypeDeclIR(node, question); }
public AMethodDeclIR getInvMethod(ATypeDeclIR typeDecl) { if (typeDecl.getInv() instanceof AMethodDeclIR) { return (AMethodDeclIR) typeDecl.getInv(); } else if (typeDecl.getInv() != null) { log.error("Expected named type invariant function " + "to be a method declaration at this point. Got: " + typeDecl.getDecl()); } return null; }
@Override public void caseADefaultClassDeclIR(ADefaultClassDeclIR node) throws AnalysisException { for (ATypeDeclIR typeDecl : node.getTypeDecls()) { if (typeDecl.getDecl() instanceof ARecordDeclIR) { ARecordDeclIR rec = (ARecordDeclIR) typeDecl.getDecl(); rec.getMethods().addFirst(recCreator.genToStringMethod(rec)); rec.getMethods().addFirst(recCreator.genCopyMethod(rec)); rec.getMethods().addFirst(recCreator.genHashcodeMethod(rec)); rec.getMethods().addFirst(recCreator.genEqualsMethod(rec)); rec.getMethods().addFirst(recCreator.genRecConstructor(rec)); } } } }
/** * Called by the {@link ATypeDeclIR} node from {@link ATypeDeclIR#apply(IAnalysis)}. * @param node the calling {@link ATypeDeclIR} node */ public A caseATypeDeclIR(ATypeDeclIR node, Q question) throws AnalysisException { _visitedNodes.add(node); A retVal = createNewReturnValue(node, question); mergeReturns(retVal,inATypeDeclIR(node, question)); if(node.getInv() != null && !_visitedNodes.contains(node.getInv())) { mergeReturns(retVal,node.getInv().apply(this, question)); } if(node.getDecl() != null && !_visitedNodes.contains(node.getDecl())) { mergeReturns(retVal,node.getDecl().apply(this, question)); } mergeReturns(retVal,outATypeDeclIR(node, question)); return retVal; }
/** * Called by the {@link ATypeDeclIR} node from {@link ATypeDeclIR#apply(IAnalysis)}. * @param node the calling {@link ATypeDeclIR} node */ public A caseATypeDeclIR(ATypeDeclIR node) throws AnalysisException { _visitedNodes.add(node); A retVal = createNewReturnValue(node); mergeReturns(retVal,inATypeDeclIR(node)); if(node.getInv() != null && !_visitedNodes.contains(node.getInv())) { mergeReturns(retVal,node.getInv().apply(this)); } if(node.getDecl() != null && !_visitedNodes.contains(node.getDecl())) { mergeReturns(retVal,node.getDecl().apply(this)); } mergeReturns(retVal,outATypeDeclIR(node)); return retVal; }
public boolean genTypeDecl(ATypeDeclIR node) { if (node.getDecl() instanceof ARecordDeclIR) { return getJavaSettings().genRecsAsInnerClasses(); } else { return info.getSettings().generateInvariants(); } }
if (typeDecl.getDecl() instanceof ANamedTypeDeclIR)