@Override public PType caseASeqMultipleBind(ASeqMultipleBind mb) throws AnalysisException { return af.createPPatternListAssistant().getPossibleType(mb.getPlist(), mb.getLocation()); }
@Override public PPatternListAssistantTC createPPatternListAssistant() { return new PPatternListAssistantTC(this); }
@Override public Boolean caseARecordPattern(ARecordPattern pattern) throws AnalysisException { return af.createPPatternListAssistant().alwaysMatches(pattern.getPlist()); }
@Override public PType caseATypeMultipleBind(ATypeMultipleBind node, TypeCheckInfo question) throws AnalysisException { question.assistantFactory.createPPatternListAssistant().typeResolve(node.getPlist(), THIS, question); PType type = question.assistantFactory.createPTypeAssistant().typeResolve(node.getType(), null, THIS, question); PType ptype = question.assistantFactory.createPPatternListAssistant().getPossibleType(node.getPlist(), node.getLocation()); if (!question.assistantFactory.getTypeComparator().compatible(ptype, type)) { TypeCheckerErrors.report(3265, "At least one bind cannot match this type", type.getLocation(), type); TypeCheckerErrors.detail2("Binds", ptype, "Type", type); } node.setType(type); return type; }
@Override public void caseAPatternListTypePair(APatternListTypePair pltp, NewQuestion question) throws AnalysisException { af.createPPatternListAssistant().typeResolve(pltp.getPatterns(), question.rootVisitor, question.question); PType type = af.createPTypeAssistant().typeResolve(pltp.getType(), null, question.rootVisitor, question.question); pltp.setType(type); }
@Override public Boolean caseASeqPattern(ASeqPattern pattern) throws AnalysisException { return af.createPPatternListAssistant().isSimple(pattern.getPlist()); }
@Override public void caseASetPattern(ASetPattern pattern) throws AnalysisException { af.createPPatternListAssistant().unResolve(pattern.getPlist()); pattern.setResolved(false); }
@Override public void caseAObjectPattern(AObjectPattern pattern, NewQuestion question) throws AnalysisException { if (pattern.getResolved()) { return; } else { pattern.setResolved(true); } try { af.createPPatternListAssistant().typeResolvePairs(pattern.getFields(), question.rootVisitor, question.question); pattern.setType(af.createPTypeAssistant().typeResolve(pattern.getType(), null, question.rootVisitor, question.question)); } catch (TypeCheckException e) { af.createPPatternAssistant().unResolve(pattern); throw e; } }
@Override public void caseASeqPattern(ASeqPattern 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; } }
@Override public Boolean caseARecordPattern(ARecordPattern pattern) throws AnalysisException { return af.createPPatternListAssistant().isSimple(pattern.getPlist()); }
@Override public void caseATuplePattern(ATuplePattern pattern) throws AnalysisException { af.createPPatternListAssistant().unResolve(pattern.getPlist()); pattern.setResolved(false); }
@Override public PType caseATypeMultipleBind(ATypeMultipleBind mb) throws AnalysisException { return af.createPPatternListAssistant().getPossibleType(mb.getPlist(), mb.getLocation()); }
@Override public void caseASetPattern(ASetPattern 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; } }
@Override public Boolean caseASetPattern(ASetPattern pattern) throws AnalysisException { return af.createPPatternListAssistant().isSimple(pattern.getPlist()); }
@Override public void caseASeqPattern(ASeqPattern pattern) throws AnalysisException { af.createPPatternListAssistant().unResolve(pattern.getPlist()); pattern.setResolved(false); }
@Override public Boolean caseATuplePattern(ATuplePattern pattern) throws AnalysisException { return af.createPPatternListAssistant().alwaysMatches(pattern.getPlist()); }
@Override public PType caseASetMultipleBind(ASetMultipleBind mb) throws AnalysisException { return af.createPPatternListAssistant().getPossibleType(mb.getPlist(), mb.getLocation()); }
@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; } }
@Override public Boolean caseATuplePattern(ATuplePattern pattern) throws AnalysisException { return af.createPPatternListAssistant().isSimple(pattern.getPlist()); }
@Override public PType caseASetPattern(ASetPattern pattern) throws AnalysisException { return AstFactory.newASetSetType(pattern.getLocation(), af.createPPatternListAssistant().getPossibleType(pattern.getPlist(), pattern.getLocation())); }