@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 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 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 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 void caseARecordPattern(ARecordPattern pattern, NewQuestion question) throws AnalysisException { if (pattern.getResolved()) { return; } else { pattern.setResolved(true); } try { af.createPPatternListAssistant().typeResolve(pattern.getPlist(), 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 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; }
af.createPPatternListAssistant().typeResolve(pp, question.rootVisitor, question.question);
question.assistantFactory.createPPatternListAssistant().typeResolve(node.getPlist(), THIS, question); question.qualifiers = null; PType type = node.getSet().apply(THIS, question);
TypeCheckInfo question) throws AnalysisException question.assistantFactory.createPPatternListAssistant().typeResolve(node.getPlist(), THIS, question); question.qualifiers = null; PType type = node.getSeq().apply(THIS, question);