/** * Called by the {@link AExists1Exp} node from {@link AExists1Exp#apply(IAnalysis)}. * @param node the calling {@link AExists1Exp} node */ public void caseAExists1Exp(AExists1Exp node, Q question) throws AnalysisException { _visitedNodes.add(node); inAExists1Exp(node, question); if(node.getType() != null && !_visitedNodes.contains(node.getType())) { node.getType().apply(this, question); } if(node.getBind() != null && !_visitedNodes.contains(node.getBind())) { node.getBind().apply(this, question); } if(node.getPredicate() != null && !_visitedNodes.contains(node.getPredicate())) { node.getPredicate().apply(this, question); } if(node.getDef() != null && !_visitedNodes.contains(node.getDef())) { node.getDef().apply(this, question); } outAExists1Exp(node, question); }
/** * Called by the {@link AExists1Exp} node from {@link AExists1Exp#apply(IAnalysis)}. * @param node the calling {@link AExists1Exp} node */ public void caseAExists1Exp(AExists1Exp node) throws AnalysisException { _visitedNodes.add(node); inAExists1Exp(node); if(node.getType() != null && !_visitedNodes.contains(node.getType())) { node.getType().apply(this); } if(node.getBind() != null && !_visitedNodes.contains(node.getBind())) { node.getBind().apply(this); } if(node.getPredicate() != null && !_visitedNodes.contains(node.getPredicate())) { node.getPredicate().apply(this); } if(node.getDef() != null && !_visitedNodes.contains(node.getDef())) { node.getDef().apply(this); } outAExists1Exp(node); }
/** * Called by the {@link AExists1Exp} node from {@link AExists1Exp#apply(IPOFAnalysis)}. * @param node the calling {@link AExists1Exp} node */ public void caseAExists1Exp(AExists1Exp node) throws AnalysisException { _visitedNodes.add(node); inAExists1Exp(node); if(node.getType() != null && !_visitedNodes.contains(node.getType())) { node.getType().apply(this); } if(node.getBind() != null && !_visitedNodes.contains(node.getBind())) { node.getBind().apply(this); } if(node.getPredicate() != null && !_visitedNodes.contains(node.getPredicate())) { node.getPredicate().apply(this); } if(node.getDef() != null && !_visitedNodes.contains(node.getDef())) { node.getDef().apply(this); } outAExists1Exp(node); }
/** * Called by the {@link AExists1Exp} node from {@link AExists1Exp#apply(IAnalysis)}. * @param node the calling {@link AExists1Exp} node */ public A caseAExists1Exp(AExists1Exp node) throws AnalysisException { _visitedNodes.add(node); A retVal = createNewReturnValue(node); mergeReturns(retVal,inAExists1Exp(node)); if(node.getType() != null && !_visitedNodes.contains(node.getType())) { mergeReturns(retVal,node.getType().apply(this)); } if(node.getBind() != null && !_visitedNodes.contains(node.getBind())) { mergeReturns(retVal,node.getBind().apply(this)); } if(node.getPredicate() != null && !_visitedNodes.contains(node.getPredicate())) { mergeReturns(retVal,node.getPredicate().apply(this)); } if(node.getDef() != null && !_visitedNodes.contains(node.getDef())) { mergeReturns(retVal,node.getDef().apply(this)); } mergeReturns(retVal,outAExists1Exp(node)); return retVal; }
/** * Called by the {@link AExists1Exp} node from {@link AExists1Exp#apply(IAnalysis)}. * @param node the calling {@link AExists1Exp} node */ public A caseAExists1Exp(AExists1Exp node, Q question) throws AnalysisException { _visitedNodes.add(node); A retVal = createNewReturnValue(node, question); mergeReturns(retVal,inAExists1Exp(node, question)); if(node.getType() != null && !_visitedNodes.contains(node.getType())) { mergeReturns(retVal,node.getType().apply(this, question)); } if(node.getBind() != null && !_visitedNodes.contains(node.getBind())) { mergeReturns(retVal,node.getBind().apply(this, question)); } if(node.getPredicate() != null && !_visitedNodes.contains(node.getPredicate())) { mergeReturns(retVal,node.getPredicate().apply(this, question)); } if(node.getDef() != null && !_visitedNodes.contains(node.getDef())) { mergeReturns(retVal,node.getDef().apply(this, question)); } mergeReturns(retVal,outAExists1Exp(node, question)); return retVal; }
@Override public LexNameSet caseAExists1Exp(AExists1Exp node, FreeVarInfo info) throws AnalysisException { PDefinition def = node.getDef(); FreeVarInfo local = info.set(new FlatEnvironment(af, def, info.env)); LexNameSet names = new LexNameSet(); if (node.getPredicate() != null) { names.addAll(node.getPredicate().apply(this, local)); } names.addAll(node.getBind().apply(this, local)); return names; }
@Override public PType caseAExists1Exp(AExists1Exp node, TypeCheckInfo question) throws AnalysisException { node.setDef(AstFactory.newAMultiBindListDefinition(node.getBind().getLocation(), question.assistantFactory.createPBindAssistant().getMultipleBindList(node.getBind()))); node.getDef().apply(THIS, question.newConstraint(null)); Environment local = new FlatCheckedEnvironment(question.assistantFactory, node.getDef(), question.env, question.scope); if (node.getBind() instanceof ATypeBind) { ATypeBind tb = (ATypeBind) node.getBind(); question.assistantFactory.createATypeBindAssistant().typeResolve(tb, THIS, question); } question.qualifiers = null; if (!question.assistantFactory.createPTypeAssistant().isType(node.getPredicate().apply(THIS, new TypeCheckInfo(question.assistantFactory, local, question.scope, null, AstFactory.newABooleanBasicType(node.getLocation()), null)), ABooleanBasicType.class)) { TypeCheckerErrors.report(3088, "Predicate is not boolean", node.getPredicate().getLocation(), node.getPredicate()); } local.unusedCheck(); node.setType(AstFactory.newABooleanBasicType(node.getLocation())); return question.assistantFactory.createPTypeAssistant().checkConstraint(question.constraint, node.getType(), node.getLocation()); }