@Override public LexNameSet caseAStateDefinition(AStateDefinition node, FreeVarInfo info) throws AnalysisException { FreeVarInfo local = info.set(new FlatEnvironment(af, new Vector<PDefinition>(), info.env)); LexNameSet names = new LexNameSet(); if (node.getInvdef() != null) { names.addAll(node.getInvdef().apply(this, local)); } if (node.getInitdef() != null) { names.addAll(node.getInitdef().apply(this, local)); } return names; }
PDefinition initdef = node.getInitdef(); if (initdef != null && initdef.apply(this, question) != null)// PDefinitionAssistantTC.findName(initdef,
public void initState(AStateDefinition sdef, StateContext initialContext) { StateDefinitionRuntimeState state = new StateDefinitionRuntimeState(); VdmRuntime.setNodeState(sdef, state); if (sdef.getInvdef() != null) { state.invfunc = new FunctionValue(sdef.getInvdef(), null, null, initialContext); initialContext.put(sdef.getName().getInvName(sdef.getLocation()), state.invfunc); } if (sdef.getInitdef() != null) { state.initfunc = new FunctionValue(sdef.getInitdef(), null, null, initialContext); initialContext.put(sdef.getName().getInitName(sdef.getLocation()), state.initfunc); } state.moduleState = new State(sdef); state.moduleState.initialize(initialContext); }
if(node.getInitdef() != null && !_visitedNodes.contains(node.getInitdef())) node.getInitdef().apply(this);
if(node.getInitdef() != null && !_visitedNodes.contains(node.getInitdef())) node.getInitdef().apply(this, question);
if(node.getInitdef() != null && !_visitedNodes.contains(node.getInitdef())) node.getInitdef().apply(this);
if(node.getInitdef() != null && !_visitedNodes.contains(node.getInitdef())) mergeReturns(retVal,node.getInitdef().apply(this));
if(node.getInitdef() != null && !_visitedNodes.contains(node.getInitdef())) mergeReturns(retVal,node.getInitdef().apply(this, 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; }
@Override public void caseAStateDefinition(AStateDefinition node, NewQuestion question) throws AnalysisException { for (AFieldField f : node.getFields()) { try { f.apply(THIS, new NewQuestion(question.rootVisitor, question.question)); } catch (TypeCheckException e) { question.question.assistantFactory.createPTypeAssistant().unResolve(f.getType()); throw e; } } node.setRecordType(af.createPTypeAssistant().typeResolve(node.getRecordType(), null, question.rootVisitor, question.question)); if (node.getInvPattern() != null) { node.getInvdef().apply(this, question); ARecordInvariantType rtype = (ARecordInvariantType) node.getRecordType(); rtype.setInvDef(node.getInvdef()); } if (node.getInitPattern() != null) { node.getInitdef().apply(this, question); } }
AExplicitFunctionDefinition initdef = node.getInitdef(); PExp initExp = node.getInitExpression(); PPattern initPattern = node.getInitPattern();