/** * Called by the {@link ANamedTypeDeclIR} node from {@link ANamedTypeDeclIR#apply(IAnalysis)}. * @param node the calling {@link ANamedTypeDeclIR} node */ public void caseANamedTypeDeclIR(ANamedTypeDeclIR node, Q question) throws AnalysisException { _visitedNodes.add(node); inANamedTypeDeclIR(node, question); if(node.getName() != null && !_visitedNodes.contains(node.getName())) { node.getName().apply(this, question); } if(node.getType() != null && !_visitedNodes.contains(node.getType())) { node.getType().apply(this, question); } outANamedTypeDeclIR(node, question); }
/** * Called by the {@link ANamedTypeDeclIR} node from {@link ANamedTypeDeclIR#apply(IAnalysis)}. * @param node the calling {@link ANamedTypeDeclIR} node */ public void caseANamedTypeDeclIR(ANamedTypeDeclIR node) throws AnalysisException { _visitedNodes.add(node); inANamedTypeDeclIR(node); if(node.getName() != null && !_visitedNodes.contains(node.getName())) { node.getName().apply(this); } if(node.getType() != null && !_visitedNodes.contains(node.getType())) { node.getType().apply(this); } outANamedTypeDeclIR(node); }
/** * Called by the {@link ANamedTypeDeclIR} node from {@link ANamedTypeDeclIR#apply(IIsaAnalysis)}. * @param node the calling {@link ANamedTypeDeclIR} node */ public void caseANamedTypeDeclIR(ANamedTypeDeclIR node) throws AnalysisException { _visitedNodes.add(node); inANamedTypeDeclIR(node); if(node.getName() != null && !_visitedNodes.contains(node.getName())) { node.getName().apply(this); } if(node.getType() != null && !_visitedNodes.contains(node.getType())) { node.getType().apply(this); } outANamedTypeDeclIR(node); }
/** * Called by the {@link ANamedTypeDeclIR} node from {@link ANamedTypeDeclIR#apply(IAnalysis)}. * @param node the calling {@link ANamedTypeDeclIR} node */ public A caseANamedTypeDeclIR(ANamedTypeDeclIR node, Q question) throws AnalysisException { _visitedNodes.add(node); A retVal = createNewReturnValue(node, question); mergeReturns(retVal,inANamedTypeDeclIR(node, question)); if(node.getName() != null && !_visitedNodes.contains(node.getName())) { mergeReturns(retVal,node.getName().apply(this, question)); } if(node.getType() != null && !_visitedNodes.contains(node.getType())) { mergeReturns(retVal,node.getType().apply(this, question)); } mergeReturns(retVal,outANamedTypeDeclIR(node, question)); return retVal; }
/** * Called by the {@link ANamedTypeDeclIR} node from {@link ANamedTypeDeclIR#apply(IAnalysis)}. * @param node the calling {@link ANamedTypeDeclIR} node */ public A caseANamedTypeDeclIR(ANamedTypeDeclIR node) throws AnalysisException { _visitedNodes.add(node); A retVal = createNewReturnValue(node); mergeReturns(retVal,inANamedTypeDeclIR(node)); if(node.getName() != null && !_visitedNodes.contains(node.getName())) { mergeReturns(retVal,node.getName().apply(this)); } if(node.getType() != null && !_visitedNodes.contains(node.getType())) { mergeReturns(retVal,node.getType().apply(this)); } mergeReturns(retVal,outANamedTypeDeclIR(node)); return retVal; }
public AMethodDeclIR genInvMethod(ADefaultClassDeclIR clazz, ANamedTypeDeclIR namedTypeDecl) { AReturnStmIR body = new AReturnStmIR(); body.setExp(jmlGen.getJavaGen().getInfo().getExpAssistant().consBoolLiteral(true)); STypeIR paramType = namedTypeDecl.getType(); AMethodTypeIR invMethodType = new AMethodTypeIR(); invMethodType.setResult(new ABoolBasicTypeIR()); invMethodType.getParams().add(paramType.clone()); String formalParamName = new NameGen(clazz).getName(JmlGenerator.GEN_INV_METHOD_PARAM_NAME); AFormalParamLocalParamIR formalParam = new AFormalParamLocalParamIR(); formalParam.setType(paramType.clone()); formalParam.setPattern(jmlGen.getJavaGen().getInfo().getPatternAssistant().consIdPattern(formalParamName)); AMethodDeclIR method = new AMethodDeclIR(); method.setImplicit(false); method.setAbstract(false); method.setAccess(IRConstants.PUBLIC); method.setAsync(false); method.setBody(body); method.getFormalParams().add(formalParam); method.setIsConstructor(false); method.setMethodType(invMethodType); method.setName("inv_" + namedTypeDecl.getName()); method.setStatic(true); return method; }