@Override public List<AIdentifierPattern> caseATuplePattern(ATuplePattern pattern) throws AnalysisException { List<AIdentifierPattern> list = new Vector<AIdentifierPattern>(); for (PPattern p : pattern.getPlist()) { list.addAll(p.apply(THIS)); } return list; }
@Override public Boolean caseATuplePattern(ATuplePattern node) throws AnalysisException { return alwaysMatches(node.getPlist()); }
@Override public Boolean caseATuplePattern(ATuplePattern pattern) throws AnalysisException { return isConstrained(pattern.getPlist()); }
@Override public Boolean caseATuplePattern(ATuplePattern pattern) throws AnalysisException { return af.createPPatternListAssistant().isSimple(pattern.getPlist()); }
@Override public Boolean caseATuplePattern(ATuplePattern pattern) throws AnalysisException { return af.createPPatternListAssistant().alwaysMatches(pattern.getPlist()); }
@Override public List<PDefinition> caseATuplePattern(ATuplePattern pattern, NewQuestion question) throws AnalysisException { List<PDefinition> defs = new Vector<PDefinition>(); if (!af.createPTypeAssistant().isProduct(question.ptype, pattern.getPlist().size())) { TypeCheckerErrors.report(3205, "Matching expression is not a product of cardinality " + pattern.getPlist().size(), pattern.getLocation(), pattern); TypeCheckerErrors.detail("Actual", question.ptype); return defs; } AProductType product = af.createPTypeAssistant().getProduct(question.ptype, pattern.getPlist().size()); Iterator<PType> ti = product.getTypes().iterator(); for (PPattern p : pattern.getPlist()) { defs.addAll(af.createPPatternAssistant().getDefinitions(p, ti.next(), question.scope)); } return defs; }
@Override public void caseATuplePattern(ATuplePattern pattern) throws AnalysisException { af.createPPatternListAssistant().unResolve(pattern.getPlist()); pattern.setResolved(false); }
public PExp caseATuplePattern(ATuplePattern node) throws AnalysisException { ATupleExp tuple = new ATupleExp(); List<PExp> values = new Vector<PExp>(); for (PPattern p : node.getPlist()) { PExp e = p.apply(this); values.add(e.clone()); } addPossibleType(tuple, node); tuple.setArgs(values); return tuple; }
/** * Called by the {@link ATuplePattern} node from {@link ATuplePattern#apply(IAnalysis)}. * @param node the calling {@link ATuplePattern} node */ public void caseATuplePattern(ATuplePattern node) throws AnalysisException { _visitedNodes.add(node); inATuplePattern(node); { List<PDefinition> copy = new ArrayList<PDefinition>(node.getDefinitions()); for( PDefinition e : copy) { if(!_visitedNodes.contains(e)) { e.apply(this); } } } { List<PPattern> copy = new ArrayList<PPattern>(node.getPlist()); for( PPattern e : copy) { if(!_visitedNodes.contains(e)) { e.apply(this); } } } outATuplePattern(node); }
/** * Called by the {@link ATuplePattern} node from {@link ATuplePattern#apply(IAnalysis)}. * @param node the calling {@link ATuplePattern} node */ public void caseATuplePattern(ATuplePattern node, Q question) throws AnalysisException { _visitedNodes.add(node); inATuplePattern(node, question); { List<PDefinition> copy = new ArrayList<PDefinition>(node.getDefinitions()); for( PDefinition e : copy) { if(!_visitedNodes.contains(e)) { e.apply(this, question); } } } { List<PPattern> copy = new ArrayList<PPattern>(node.getPlist()); for( PPattern e : copy) { if(!_visitedNodes.contains(e)) { e.apply(this, question); } } } outATuplePattern(node, question); }
/** * Called by the {@link ATuplePattern} node from {@link ATuplePattern#apply(IPOFAnalysis)}. * @param node the calling {@link ATuplePattern} node */ public void caseATuplePattern(ATuplePattern node) throws AnalysisException { _visitedNodes.add(node); inATuplePattern(node); { List<PDefinition> copy = new ArrayList<PDefinition>(node.getDefinitions()); for( PDefinition e : copy) { if(!_visitedNodes.contains(e)) { e.apply(this); } } } { List<PPattern> copy = new ArrayList<PPattern>(node.getPlist()); for( PPattern e : copy) { if(!_visitedNodes.contains(e)) { e.apply(this); } } } outATuplePattern(node); }
@Override public SPatternIR caseATuplePattern(ATuplePattern node, IRInfo question) throws AnalysisException { ATuplePatternIR tuplePatternCg = new ATuplePatternIR(); for (PPattern currentPattern : node.getPlist()) { SPatternIR patternCg = currentPattern.apply(question.getPatternVisitor(), question); if (patternCg != null) { tuplePatternCg.getPatterns().add(patternCg); } else { return null; } } return tuplePatternCg; }
@Override public LexNameList caseATuplePattern(ATuplePattern pattern) throws AnalysisException { LexNameList list = new LexNameList(); for (PPattern p : pattern.getPlist()) { list.addAll(af.createPPatternAssistant().getAllVariableNames(p)); } return list; }
@Override public PType caseATuplePattern(ATuplePattern pattern) throws AnalysisException { PTypeList list = new PTypeList(); for (PPattern p : pattern.getPlist()) { list.add(af.createPPatternAssistant().getPossibleType(p)); } return list.getType(pattern.getLocation()); }
List<PPattern> copy = new ArrayList<PPattern>(node.getPlist()); for( PPattern e : copy)
List<PPattern> copy = new ArrayList<PPattern>(node.getPlist()); for( PPattern e : copy)
@Override public void caseATuplePattern(ATuplePattern pattern, NewQuestion question) throws AnalysisException { if (pattern.getResolved()) { return; } else { pattern.setResolved(true); } try { af.createPPatternListAssistant().typeResolve(pattern.getPlist(), question.rootVisitor, question.question); } catch (TypeCheckException e) { af.createPPatternAssistant().unResolve(pattern); throw e; } }
int noOfFields = ((ATuplePattern) pattern).getPlist().size(); for (int i = 0; i < noOfFields; i++)
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)); }