public List<PatternInfo> extractFromParams( List<AFormalParamLocalParamIR> params) { List<PatternInfo> patternInfo = new LinkedList<PatternInfo>(); for (AFormalParamLocalParamIR param : params) { STypeIR type = param.getType(); SPatternIR pattern = param.getPattern(); patternInfo.add(new PatternInfo(type, pattern, null)); } return patternInfo; }
public String hackInv(ARecordDeclIR type) { if (type.getInvariant() != null) { AFuncDeclIR invFunc = (AFuncDeclIR) type.getInvariant(); StringBuilder sb = new StringBuilder(); sb.append("inv "); sb.append(invFunc.getFormalParams().get(0).getPattern().toString()); sb.append(" == "); sb.append(invFunc.getName()); sb.append("("); sb.append("&"); sb.append(invFunc.getFormalParams().get(0).getPattern().toString()); sb.append(")"); return sb.toString(); } return ""; }
public String hackInv(ANamedTypeDeclIR type) { ATypeDeclIR tDecl = (ATypeDeclIR) type.parent(); if (tDecl.getInv() != null) { AFuncDeclIR invFunc = (AFuncDeclIR) tDecl.getInv(); StringBuilder sb = new StringBuilder(); sb.append("inv "); sb.append(invFunc.getFormalParams().get(0).getPattern().toString()); sb.append(" == "); sb.append(invFunc.getName()); sb.append("("); sb.append("&"); sb.append(invFunc.getFormalParams().get(0).getPattern().toString()); sb.append(")"); return sb.toString(); } return ""; }
/** * Called by the {@link AFormalParamLocalParamIR} node from {@link AFormalParamLocalParamIR#apply(IAnalysis)}. * @param node the calling {@link AFormalParamLocalParamIR} node */ public void caseAFormalParamLocalParamIR(AFormalParamLocalParamIR node, Q question) throws AnalysisException { _visitedNodes.add(node); inAFormalParamLocalParamIR(node, question); if(node.getType() != null && !_visitedNodes.contains(node.getType())) { node.getType().apply(this, question); } if(node.getPattern() != null && !_visitedNodes.contains(node.getPattern())) { node.getPattern().apply(this, question); } outAFormalParamLocalParamIR(node, question); }
/** * Called by the {@link AFormalParamLocalParamIR} node from {@link AFormalParamLocalParamIR#apply(IAnalysis)}. * @param node the calling {@link AFormalParamLocalParamIR} node */ public void caseAFormalParamLocalParamIR(AFormalParamLocalParamIR node) throws AnalysisException { _visitedNodes.add(node); inAFormalParamLocalParamIR(node); if(node.getType() != null && !_visitedNodes.contains(node.getType())) { node.getType().apply(this); } if(node.getPattern() != null && !_visitedNodes.contains(node.getPattern())) { node.getPattern().apply(this); } outAFormalParamLocalParamIR(node); }
/** * Called by the {@link AFormalParamLocalParamIR} node from {@link AFormalParamLocalParamIR#apply(IIsaAnalysis)}. * @param node the calling {@link AFormalParamLocalParamIR} node */ public void caseAFormalParamLocalParamIR(AFormalParamLocalParamIR node) throws AnalysisException { _visitedNodes.add(node); inAFormalParamLocalParamIR(node); if(node.getType() != null && !_visitedNodes.contains(node.getType())) { node.getType().apply(this); } if(node.getPattern() != null && !_visitedNodes.contains(node.getPattern())) { node.getPattern().apply(this); } outAFormalParamLocalParamIR(node); }
private List<ClonableString> consMethodCond(SDeclIR decl, List<AFormalParamLocalParamIR> parentMethodParams, String jmlAnno) { if (decl instanceof AMethodDeclIR) { AMethodDeclIR cond = (AMethodDeclIR) decl; List<String> fieldNames = new LinkedList<String>(); // The arguments of a function or an operation are passed to the pre/post condition int i; for (i = 0; i < parentMethodParams.size(); i++) { fieldNames.add(util.getMethodCondArgName(parentMethodParams.get(i).getPattern())); } // Now compute the remaining argument names which (possibly) // include the RESULT and the old state passed for (; i < cond.getFormalParams().size(); i++) { fieldNames.add(util.getMethodCondArgName(cond.getFormalParams().get(i).getPattern())); } return annotator.consAnno(jmlAnno, cond.getName(), fieldNames); } else if (decl != null) { log.error("Expected pre/post condition to be a method declaration at this point. Got: " + decl); } return null; }
/** * Called by the {@link AFormalParamLocalParamIR} node from {@link AFormalParamLocalParamIR#apply(IAnalysis)}. * @param node the calling {@link AFormalParamLocalParamIR} node */ public A caseAFormalParamLocalParamIR(AFormalParamLocalParamIR node, Q question) throws AnalysisException { _visitedNodes.add(node); A retVal = createNewReturnValue(node, question); mergeReturns(retVal,inAFormalParamLocalParamIR(node, question)); if(node.getType() != null && !_visitedNodes.contains(node.getType())) { mergeReturns(retVal,node.getType().apply(this, question)); } if(node.getPattern() != null && !_visitedNodes.contains(node.getPattern())) { mergeReturns(retVal,node.getPattern().apply(this, question)); } mergeReturns(retVal,outAFormalParamLocalParamIR(node, question)); return retVal; }
/** * Called by the {@link AFormalParamLocalParamIR} node from {@link AFormalParamLocalParamIR#apply(IAnalysis)}. * @param node the calling {@link AFormalParamLocalParamIR} node */ public A caseAFormalParamLocalParamIR(AFormalParamLocalParamIR node) throws AnalysisException { _visitedNodes.add(node); A retVal = createNewReturnValue(node); mergeReturns(retVal,inAFormalParamLocalParamIR(node)); if(node.getType() != null && !_visitedNodes.contains(node.getType())) { mergeReturns(retVal,node.getType().apply(this)); } if(node.getPattern() != null && !_visitedNodes.contains(node.getPattern())) { mergeReturns(retVal,node.getPattern().apply(this)); } mergeReturns(retVal,outAFormalParamLocalParamIR(node)); return retVal; }
SPatternIR paramPattern = param.getPattern(); String prefix = config.getName(param.getPattern().getClass()); transAssistant.replaceNodeWith(param.getPattern(), idPattern); } else
if (!(param.getPattern() instanceof AIdentifierPatternIR)) + param.getPattern()); this.paramName = ((AIdentifierPatternIR) param.getPattern()).getName();
public AIdentifierVarExpIR getInvParamVar(AMethodDeclIR invMethod) { AFormalParamLocalParamIR formalParam = getInvFormalParam(invMethod); if (formalParam == null) { return null; } String paramName = getName(formalParam.getPattern()); if (paramName == null) { return null; } STypeIR paramType = formalParam.getType().clone(); return jmlGen.getJavaGen().getInfo().getExpAssistant().consIdVar(paramName, paramType); }
SPatternIR pattern = paramLocalDeclIR.getPattern();
formalParam.setPattern(params.get(i).getPattern().clone());
SPatternIR pattern = param.getPattern();
SPatternIR paramPattern = p.getPattern();
String varNameStr = decorator.getJmlGen().getUtil().getName(param.getPattern());
SPatternIR pattern = param.getPattern();
String paramName = util.getName(invParam.getPattern()); cast.setExp(paramVar.clone()); AVarDeclIR decl = javaGen.getInfo().getDeclAssistant().consLocalVarDecl(invParamCopy.getType(), invParamCopy.getPattern(), cast); declStmBlock.setScoped(false); declStmBlock.getLocalDefs().add(decl);