/** * Called by the {@link APatternTypePair} node from {@link APatternTypePair#apply(IPOFAnalysis)}. * @param node the calling {@link APatternTypePair} node */ public void caseAPatternTypePair(APatternTypePair node) throws AnalysisException { _visitedNodes.add(node); inAPatternTypePair(node); if(node.getPattern() != null && !_visitedNodes.contains(node.getPattern())) { node.getPattern().apply(this); } if(node.getType() != null && !_visitedNodes.contains(node.getType())) { node.getType().apply(this); } outAPatternTypePair(node); }
/** * Called by the {@link APatternTypePair} node from {@link APatternTypePair#apply(IAnalysis)}. * @param node the calling {@link APatternTypePair} node */ public void caseAPatternTypePair(APatternTypePair node) throws AnalysisException { _visitedNodes.add(node); inAPatternTypePair(node); if(node.getPattern() != null && !_visitedNodes.contains(node.getPattern())) { node.getPattern().apply(this); } if(node.getType() != null && !_visitedNodes.contains(node.getType())) { node.getType().apply(this); } outAPatternTypePair(node); }
/** * Called by the {@link APatternTypePair} node from {@link APatternTypePair#apply(IAnalysis)}. * @param node the calling {@link APatternTypePair} node */ public void caseAPatternTypePair(APatternTypePair node, Q question) throws AnalysisException { _visitedNodes.add(node); inAPatternTypePair(node, question); if(node.getPattern() != null && !_visitedNodes.contains(node.getPattern())) { node.getPattern().apply(this, question); } if(node.getType() != null && !_visitedNodes.contains(node.getType())) { node.getType().apply(this, question); } outAPatternTypePair(node, question); }
public List<PDefinition> getDefinitions(APatternTypePair result) { return af.createPPatternAssistant().getDefinitions(result.getPattern(), result.getType(), NameScope.LOCAL); }
/** * Called by the {@link APatternTypePair} node from {@link APatternTypePair#apply(IAnalysis)}. * @param node the calling {@link APatternTypePair} node */ public A caseAPatternTypePair(APatternTypePair node, Q question) throws AnalysisException { _visitedNodes.add(node); A retVal = createNewReturnValue(node, question); mergeReturns(retVal,inAPatternTypePair(node, question)); if(node.getPattern() != null && !_visitedNodes.contains(node.getPattern())) { mergeReturns(retVal,node.getPattern().apply(this, question)); } if(node.getType() != null && !_visitedNodes.contains(node.getType())) { mergeReturns(retVal,node.getType().apply(this, question)); } mergeReturns(retVal,outAPatternTypePair(node, question)); return retVal; }
/** * Called by the {@link APatternTypePair} node from {@link APatternTypePair#apply(IAnalysis)}. * @param node the calling {@link APatternTypePair} node */ public A caseAPatternTypePair(APatternTypePair node) throws AnalysisException { _visitedNodes.add(node); A retVal = createNewReturnValue(node); mergeReturns(retVal,inAPatternTypePair(node)); if(node.getPattern() != null && !_visitedNodes.contains(node.getPattern())) { mergeReturns(retVal,node.getPattern().apply(this)); } if(node.getType() != null && !_visitedNodes.contains(node.getType())) { mergeReturns(retVal,node.getType().apply(this)); } mergeReturns(retVal,outAPatternTypePair(node)); return retVal; }
public String hackResultName(AFuncDeclIR func) throws AnalysisException { SourceNode x = func.getSourceNode(); if (x.getVdmNode() instanceof AImplicitFunctionDefinition) { AImplicitFunctionDefinition iFunc = (AImplicitFunctionDefinition) x.getVdmNode(); return iFunc.getResult().getPattern().toString(); } throw new AnalysisException("Expected AFuncDeclIR in implicit function source. Got: " + x.getVdmNode().getClass().toString()); }
private TypeCompatibilityObligation(AImplicitOperationDefinition def, PType actualResult, IPOContextStack ctxt, IPogAssistantFactory assistantFactory) throws AnalysisException { super(def, POType.TYPE_COMP, ctxt, def.getLocation(), assistantFactory); this.assistantFactory = assistantFactory; PExp result = null; if (def.getResult().getPattern() instanceof AIdentifierPattern) { AIdentifierPattern ip = (AIdentifierPattern) def.getResult().getPattern(); result = AstFactory.newAVariableExp(ip.getName()); } else { ATuplePattern tp = (ATuplePattern) def.getResult().getPattern(); List<PExp> args = new ArrayList<PExp>(); for (PPattern p : tp.getPlist()) { AIdentifierPattern ip = (AIdentifierPattern) p; args.add(AstFactory.newAVariableExp(ip.getName())); } result = AstFactory.newATupleExp(def.getLocation(), args); } stitch = oneType(false, result, ((AOperationType) def.getType()).getResult().clone(), actualResult.clone()); valuetree.setPredicate(ctxt.getPredWithContext(stitch)); }
ATypeMultipleBind tmBind = new ATypeMultipleBind(); List<PPattern> patternList = new LinkedList<PPattern>(); patternList.add(result.getPattern().clone()); tmBind.setPlist(patternList); tmBind.setType(result.getType().clone()); localDef.setPattern(result.getPattern().clone()); localDef.setType(result.getType().clone()); localDef.setTest(body.clone());
public AExplicitFunctionDefinition getPostDefinition( AImplicitFunctionDefinition d) { List<List<PPattern>> parameters = getParamPatternList(d); parameters.get(0).add(d.getResult().getPattern().clone()); @SuppressWarnings("unchecked") AExplicitFunctionDefinition def = AstFactory.newAExplicitFunctionDefinition(d.getName().getPostName(d.getPostcondition().getLocation()), NameScope.GLOBAL, (List<ILexNameToken>) d.getTypeParams().clone(), af.createAFunctionTypeAssistant().getPostType((AFunctionType) d.getType()), parameters, d.getPostcondition(), null, null, false, null); def.setAccess(d.getAccess().clone()); def.setClassDefinition(d.getClassDefinition()); return def; }
plist.add(d.getResult().getPattern().clone());
List<PExp> postArglist = new Vector<PExp>(arglist); if (func.getResult().getPattern() instanceof AIdentifierPattern) AIdentifierPattern ip = (AIdentifierPattern) func.getResult().getPattern().clone(); postArglist.add(patternToExp(func.getResult().getPattern())); existsExp.setBindList(getMultipleTypeBindList(func.getResult().getType().clone(), ip.getName())); } else
body = patternToExp(func.getResult().getPattern());
List<PExp> postArglist = new Vector<PExp>(arglist); if (op.getResult().getPattern() instanceof AIdentifierPattern) AIdentifierPattern ip = (AIdentifierPattern) op.getResult().getPattern(); postArglist.add(patternToExp(op.getResult().getPattern().clone()));
defs.addAll(question.assistantFactory.createPPatternAssistant().getDefinitions(node.getResult().getPattern(), ((AOperationType) node.getType()).getResult(), NameScope.STATE));