@Override public List<PDefinition> caseAImplicitOperationDefinition( AImplicitOperationDefinition node) throws AnalysisException { List<PDefinition> defs = new Vector<PDefinition>(); defs.add(node); if (Settings.dialect == Dialect.VDM_SL || Settings.release == Release.CLASSIC) { if (node.getPredef() != null) { defs.add(node.getPredef()); } if (node.getPostdef() != null) { defs.add(node.getPostdef()); } } return defs; }
@Override public PDefinition caseAImplicitOperationDefinition( AImplicitOperationDefinition node, Newquestion question) throws AnalysisException { if (af.createPDefinitionAssistant().findNameBaseCase(node, question.sought, question.scope) != null) { return node; } if (Settings.dialect == Dialect.VDM_SL || Settings.release == Release.CLASSIC) { PDefinition predef = node.getPredef(); if (predef != null && predef.apply(this, question) != null) { return predef; } PDefinition postdef = node.getPostdef(); if (postdef != null && postdef.apply(this, question) != null) { return postdef; } } return null; }
@Override public LexNameSet caseAImplicitOperationDefinition(AImplicitOperationDefinition node, FreeVarInfo info) throws AnalysisException { List<PDefinition> defs = new Vector<PDefinition>(); for (APatternListTypePair pltp : node.getParameterPatterns()) { defs.addAll(getDefinitions(pltp, NameScope.LOCAL)); } FreeVarInfo local = info.set(new FlatEnvironment(af, defs, info.env)); LexNameSet names = new LexNameSet(); if (node.getBody() != null) { names.addAll(node.getBody().apply(this, local)); } if (node.getPredef() != null) { names.addAll(node.getPredef().apply(this, local)); } if (node.getPostdef() != null) { names.addAll(node.getPostdef().apply(this, local)); } return names; }
if (def.getPostdef() != null) PExp found = def.getPostdef().apply(THIS, lineno); if (found != null)
@Override public NameValuePairList caseAImplicitOperationDefinition( AImplicitOperationDefinition def, Context initialContext) throws AnalysisException { NameValuePairList nvl = new NameValuePairList(); FunctionValue prefunc = def.getPredef() == null ? null : new FunctionValue(def.getPredef(), null, null, null); FunctionValue postfunc = def.getPostdef() == null ? null : new FunctionValue(def.getPostdef(), null, null, null); // Note, body may be null if it is really implicit. This is caught // when the function is invoked. The value is needed to implement // the pre_() expression for implicit functions. OperationValue op = new OperationValue(def, prefunc, postfunc, def.getState(), af); op.isConstructor = def.getIsConstructor(); op.isStatic = af.createPAccessSpecifierAssistant().isStatic(def.getAccess()); nvl.add(new NameValuePair(def.getName(), op)); if (def.getPredef() != null) { prefunc.isStatic = af.createPAccessSpecifierAssistant().isStatic(def.getAccess()); nvl.add(new NameValuePair(def.getPredef().getName(), prefunc)); } if (def.getPostdef() != null) { postfunc.isStatic = af.createPAccessSpecifierAssistant().isStatic(def.getAccess()); nvl.add(new NameValuePair(def.getPostdef().getName(), postfunc)); } return nvl; }
if(node.getPostdef() != null && !_visitedNodes.contains(node.getPostdef())) node.getPostdef().apply(this, question);
if(node.getPostdef() != null && !_visitedNodes.contains(node.getPostdef())) node.getPostdef().apply(this);
if(node.getPostdef() != null && !_visitedNodes.contains(node.getPostdef())) node.getPostdef().apply(this);
if(node.getPostdef() != null && !_visitedNodes.contains(node.getPostdef())) mergeReturns(retVal,node.getPostdef().apply(this));
if(node.getPostdef() != null && !_visitedNodes.contains(node.getPostdef())) mergeReturns(retVal,node.getPostdef().apply(this, question));
AApplyExp postApply = getApplyExp(getVarExp(op.getPostdef().getName(),op.getPostdef().clone()), postArglist); postApply.getRoot().setType(op.getPostdef().getType().clone()); postApply.setType(new ABooleanBasicType()); existsExp.setPredicate(postApply); AApplyExp postApply = getApplyExp(getVarExp(op.getPostdef().getName(),op.getPostdef().clone()), new Vector<PExp>(postArglist)); postApply.setType(new ABooleanBasicType()); postApply.getRoot().setType(op.getPostdef().getType().clone()); exists_exp.setPredicate(postApply); mainExp = exists_exp;
@Override public void caseAImplicitOperationDefinition( AImplicitOperationDefinition node, Environment question) throws AnalysisException { node.setState(findStateDefinition(question, node)); if (node.getPrecondition() != null) { node.setPredef(af.createAImplicitOperationDefinitionAssistant().getPreDefinition(node, question)); af.createPDefinitionAssistant().markUsed(node.getPredef()); } if (node.getPostcondition() != null) { node.setPostdef(af.createAImplicitOperationDefinitionAssistant().getPostDefinition(node, question)); af.createPDefinitionAssistant().markUsed(node.getPostdef()); } }
node.getPostdef().apply(this, question);
if (node.getPostdef() != null) FlatCheckedEnvironment post = new FlatCheckedEnvironment(question.assistantFactory, postdefs, local, NameScope.NAMESANDANYSTATE); post.setStatic(question.assistantFactory.createPAccessSpecifierAssistant().isStatic(node.getAccess())); post.setEnclosingDefinition(node.getPostdef()); post.setFunctional(true); b = node.getPostdef().getBody().apply(THIS, new TypeCheckInfo(question.assistantFactory, post, NameScope.NAMESANDANYSTATE)); post.unusedCheck(); } else post.setEnclosingDefinition(node.getPostdef()); post.setFunctional(true); b = node.getPostdef().getBody().apply(THIS, new TypeCheckInfo(question.assistantFactory, post, NameScope.NAMESANDANYSTATE));