/** * Called by the {@link AForAllStm} node from {@link AForAllStm#apply(IAnalysis)}. * @param node the calling {@link AForAllStm} node */ public void caseAForAllStm(AForAllStm node, Q question) throws AnalysisException { _visitedNodes.add(node); inAForAllStm(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); } if(node.getSet() != null && !_visitedNodes.contains(node.getSet())) { node.getSet().apply(this, question); } if(node.getStatement() != null && !_visitedNodes.contains(node.getStatement())) { node.getStatement().apply(this, question); } outAForAllStm(node, question); }
/** * Called by the {@link AForAllStm} node from {@link AForAllStm#apply(IAnalysis)}. * @param node the calling {@link AForAllStm} node */ public void caseAForAllStm(AForAllStm node) throws AnalysisException { _visitedNodes.add(node); inAForAllStm(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); } if(node.getSet() != null && !_visitedNodes.contains(node.getSet())) { node.getSet().apply(this); } if(node.getStatement() != null && !_visitedNodes.contains(node.getStatement())) { node.getStatement().apply(this); } outAForAllStm(node); }
/** * Called by the {@link AForAllStm} node from {@link AForAllStm#apply(IPOFAnalysis)}. * @param node the calling {@link AForAllStm} node */ public void caseAForAllStm(AForAllStm node) throws AnalysisException { _visitedNodes.add(node); inAForAllStm(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); } if(node.getSet() != null && !_visitedNodes.contains(node.getSet())) { node.getSet().apply(this); } if(node.getStatement() != null && !_visitedNodes.contains(node.getStatement())) { node.getStatement().apply(this); } outAForAllStm(node); }
/** * Called by the {@link AForAllStm} node from {@link AForAllStm#apply(IAnalysis)}. * @param node the calling {@link AForAllStm} node */ public A caseAForAllStm(AForAllStm node) throws AnalysisException { _visitedNodes.add(node); A retVal = createNewReturnValue(node); mergeReturns(retVal,inAForAllStm(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)); } if(node.getSet() != null && !_visitedNodes.contains(node.getSet())) { mergeReturns(retVal,node.getSet().apply(this)); } if(node.getStatement() != null && !_visitedNodes.contains(node.getStatement())) { mergeReturns(retVal,node.getStatement().apply(this)); } mergeReturns(retVal,outAForAllStm(node)); return retVal; }
/** * Called by the {@link AForAllStm} node from {@link AForAllStm#apply(IAnalysis)}. * @param node the calling {@link AForAllStm} node */ public A caseAForAllStm(AForAllStm node, Q question) throws AnalysisException { _visitedNodes.add(node); A retVal = createNewReturnValue(node, question); mergeReturns(retVal,inAForAllStm(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)); } if(node.getSet() != null && !_visitedNodes.contains(node.getSet())) { mergeReturns(retVal,node.getSet().apply(this, question)); } if(node.getStatement() != null && !_visitedNodes.contains(node.getStatement())) { mergeReturns(retVal,node.getStatement().apply(this, question)); } mergeReturns(retVal,outAForAllStm(node, question)); return retVal; }
@Override public PType caseAForAllStm(AForAllStm node, TypeCheckInfo question) throws AnalysisException { node.setType(node.getSet().apply(THIS, question)); question.assistantFactory.createPPatternAssistant().typeResolve(node.getPattern(), THIS, question); if (question.assistantFactory.createPTypeAssistant().isSet(node.getType())) { SSetType st = question.assistantFactory.createPTypeAssistant().getSet(node.getType()); List<PDefinition> defs = question.assistantFactory.createPPatternAssistant().getDefinitions(node.getPattern(), st.getSetof(), NameScope.LOCAL); Environment local = new FlatCheckedEnvironment(question.assistantFactory, defs, question.env, question.scope); PType rt = node.getStatement().apply(THIS, new TypeCheckInfo(question.assistantFactory, local, question.scope)); local.unusedCheck(); node.setType(rt); return rt; } else { TypeCheckerErrors.report(3219, "For all statement does not contain a set type", node.getLocation(), node); node.setType(AstFactory.newAUnknownType(node.getLocation())); return node.getType(); } }