public void typeResolve(List<PPattern> pp, IQuestionAnswer<TypeCheckInfo, PType> rootVisitor, TypeCheckInfo question) throws AnalysisException { for (PPattern pattern : pp) { af.createPPatternAssistant().typeResolve(pattern, rootVisitor, question); } }
public void typeResolve( QuestionAnswerAdaptor<TypeCheckInfo, PType> rootVisitor, TypeCheckInfo question) throws AnalysisException { for (PPattern pPattern : this) { af.createPPatternAssistant().typeResolve(pPattern, rootVisitor, question); } }
public void typeResolvePairs(List<ANamePatternPair> npplist, IQuestionAnswer<TypeCheckInfo, PType> rootVisitor, TypeCheckInfo question) throws AnalysisException { for (ANamePatternPair npp : npplist) { af.createPPatternAssistant().typeResolve(npp.getPattern(), rootVisitor, question); } }
@Override public void caseAValueDefinition(AValueDefinition node, NewQuestion question) throws AnalysisException { if (node.getType() != null) { node.setType(af.createPTypeAssistant().typeResolve(node.getType(), null, question.rootVisitor, question.question)); af.createPPatternAssistant().typeResolve(node.getPattern(), question.rootVisitor, question.question); // af.createAValueDefinitionAssistant().updateDefs(node, question.question); updateDefs(node, question.question); } }
@Override public PType caseAStateDefinition(AStateDefinition node, TypeCheckInfo question) throws AnalysisException { Environment base = question.env; if (base.findStateDefinition() != node) { TypeCheckerErrors.report(3047, "Only one state definition allowed per module", node.getLocation(), node); return null; } for (PDefinition def : node.getStateDefs()) { if (!def.getName().getOld()) // Don't check old names { question.assistantFactory.getTypeComparator().checkComposeTypes(def.getType(), question.env, false); } } question.assistantFactory.createPDefinitionListAssistant().typeCheck(node.getStateDefs(), THIS, question); if (node.getInvdef() != null) { node.getInvdef().apply(THIS, question); question.assistantFactory.createPPatternAssistant().typeResolve(node.getInvPattern(), THIS, question); } if (node.getInitdef() != null) { node.getInitdef().apply(THIS, question); question.assistantFactory.createPPatternAssistant().typeResolve(node.getInitPattern(), THIS, question); } return null; }
af.createPPatternAssistant().typeResolve(node.getInvPattern(), question.rootVisitor, question.question); af.createPPatternAssistant().typeResolve(node.getEqRelation().getLhsPattern(), question.rootVisitor, question.question); af.createPPatternAssistant().typeResolve(node.getEqRelation().getRhsPattern(), question.rootVisitor, question.question); af.createPPatternAssistant().typeResolve(node.getOrdRelation().getLhsPattern(), question.rootVisitor, question.question); af.createPPatternAssistant().typeResolve(node.getOrdRelation().getRhsPattern(), question.rootVisitor, question.question);
question.assistantFactory.createPPatternAssistant().typeResolve(node.getPattern(), THIS, question); question.assistantFactory.createPPatternAssistant().typeResolve(node.getPattern(), THIS, question);
question.assistantFactory.createPPatternAssistant().typeResolve(c.getPattern(), rootVisitor, new TypeCheckInfo(question.assistantFactory, question.env)); question.assistantFactory.createPPatternAssistant().typeResolve(c.getPattern(), rootVisitor, new TypeCheckInfo(question.assistantFactory, question.env)); c.getDefs().addAll(question.assistantFactory.createPPatternAssistant().getDefinitions(c.getPattern(), expType, NameScope.LOCAL)); } catch (TypeCheckException e)
@Override public void caseAExplicitOperationDefinition( AExplicitOperationDefinition node, NewQuestion question) throws AnalysisException { node.setType(af.createPTypeAssistant().typeResolve(node.getType(), null, question.rootVisitor, question.question)); if (question.question.env.isVDMPP()) { node.getName().setTypeQualifier(((AOperationType) node.getType()).getParameters()); if (node.getName().getName().equals(node.getClassDefinition().getName().getName())) { node.setIsConstructor(true); node.getClassDefinition().setHasContructors(true); } } if (node.getPrecondition() != null) { node.getPredef().apply(this, question); } if (node.getPostcondition() != null) { node.getPostdef().apply(this, question); } for (PPattern p : node.getParameterPatterns()) { af.createPPatternAssistant().typeResolve(p, question.rootVisitor, question.question); } }
question.assistantFactory.createPPatternAssistant().typeResolve(node.getPattern(), THIS, question); node.setDefs(question.assistantFactory.createPPatternAssistant().getDefinitions(node.getPattern(), type, NameScope.LOCAL));
@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(); } }
question.assistantFactory.createPPatternAssistant().typeResolve(node.getBind().getPattern(), THIS, question); question.assistantFactory.createPPatternAssistant().typeResolve(node.getPattern(), THIS, question); node.setDefs(question.assistantFactory.createPPatternAssistant().getDefinitions(node.getPattern(), type, NameScope.LOCAL));
question.assistantFactory.createPPatternAssistant().typeResolve(pattern, THIS, question); node.setDefs(question.assistantFactory.createPPatternAssistant().getDefinitions(pattern, node.getExpType(), question.scope)); node.setDefType(node.getExpType()); question.assistantFactory.createPPatternAssistant().typeResolve(node.getSetbind().getPattern(), THIS, question); node.setDefs(question.assistantFactory.createPPatternAssistant().getDefinitions(node.getSetbind().getPattern(), node.getDefType(), question.scope)); question.assistantFactory.createPPatternAssistant().typeResolve(node.getSeqbind().getPattern(), THIS, question); node.setDefs(question.assistantFactory.createPPatternAssistant().getDefinitions(node.getSeqbind().getPattern(), node.getDefType(), question.scope));