if(node.getName() != null ) node.getName().apply(this); if(node.getClassDefinition() != null && !_visitedNodes.contains(node.getClassDefinition())) node.getClassDefinition().apply(this); if(node.getAccess() != null && !_visitedNodes.contains(node.getAccess())) node.getAccess().apply(this); if(node.getType() != null && !_visitedNodes.contains(node.getType())) node.getType().apply(this); if(node.getPattern() != null && !_visitedNodes.contains(node.getPattern())) node.getPattern().apply(this); if(node.getTypebind() != null && !_visitedNodes.contains(node.getTypebind())) node.getTypebind().apply(this); if(node.getSetbind() != null && !_visitedNodes.contains(node.getSetbind())) node.getSetbind().apply(this); if(node.getSeqbind() != null && !_visitedNodes.contains(node.getSeqbind()))
@Override public PType caseAEqualsDefinition(AEqualsDefinition node) throws AnalysisException { return node.getDefType() != null ? node.getDefType() : AstFactory.newAUnknownType(node.getLocation()); }
@Override public LexNameList caseAEqualsDefinition(AEqualsDefinition def) throws AnalysisException { LexNameList list = af.createPExpAssistant().getOldNames(def.getTest()); if (def.getSetbind() != null) { list.addAll(def.getSetbind().apply(this)); } else if (def.getSeqbind() != null) { list.addAll(def.getSeqbind().apply(this)); } return list; }
node.setExpType(node.getTest().apply(THIS, question)); PPattern pattern = node.getPattern(); node.setDefs(question.assistantFactory.createPPatternAssistant().getDefinitions(pattern, node.getExpType(), question.scope)); node.setDefType(node.getExpType()); else if (node.getTypebind() != null) question.assistantFactory.createATypeBindAssistant().typeResolve(node.getTypebind(), THIS, question); ATypeBind typebind = node.getTypebind(); if (!question.assistantFactory.getTypeComparator().compatible(typebind.getType(), node.getExpType())) node.setDefType(typebind.getType()); // Effectively a cast node.setDefs(question.assistantFactory.createPPatternAssistant().getDefinitions(typebind.getPattern(), node.getDefType(), question.scope)); else if (node.getSetbind() != null) PType st = node.getSetbind().getSet().apply(THIS, question); TypeCheckerErrors.report(3015, "Set bind is not a set type?", node.getLocation(), node); node.setDefType(node.getExpType()); if (!question.assistantFactory.getTypeComparator().compatible(node.getExpType(), setof)) TypeCheckerErrors.report(3016, "Expression is not compatible with set bind", node.getSetbind().getLocation(), node.getSetbind()); node.setDefType(setof); // Effectively a cast
PPattern pattern = node.getPattern(); if (pattern != null) && node.getExpType() instanceof AUnionType) AUnionType ut = (AUnionType) node.getExpType(); PTypeSet set = new PTypeSet(assistantFactory); PType compatible = set.getType(node.getLocation()); if (!assistantFactory.getTypeComparator().isSubType(question.checkType(node.getTest(), node.getExpType()), compatible)) TypeCompatibilityObligation sto = TypeCompatibilityObligation.newInstance(node.getTest(), compatible, node.getExpType(), question, assistantFactory); if (sto != null) else if (node.getTypebind() != null) if (!assistantFactory.getTypeComparator().isSubType(question.checkType(node.getTest(), node.getExpType()), node.getDefType())) TypeCompatibilityObligation sto = TypeCompatibilityObligation.newInstance(node.getTest(), node.getDefType(), node.getExpType(), question, assistantFactory); if (sto != null) else if (node.getSetbind() != null) ASetBind bind = node.getSetbind(); list.addAll(bind.getSet().apply(rootVisitor, question)); list.add(new SetMembershipObligation(bind.getPattern(), bind.getSet(), question, assistantFactory)); else if (node.getSeqbind() != null)
v = def.getTest().apply(VdmRuntime.getExpressionEvaluator(), initialContext); } catch (AnalysisException e1) VdmRuntimeError.abort(def.getLocation(), (ValueException) e1); if (def.getPattern() != null) nvpl = af.createPPatternAssistant().getNamedValues(def.getPattern(), v, initialContext); } catch (PatternMatchException e) else if (def.getTypebind() != null) Value converted = v.convertTo(def.getTypebind().getType(), initialContext); nvpl = af.createPPatternAssistant().getNamedValues(def.getTypebind().getPattern(), converted, initialContext); } catch (PatternMatchException e) VdmRuntimeError.abort(def.getLocation(), e); else if (def.getSetbind() != null) ValueSet set = def.getSetbind().getSet().apply(VdmRuntime.getExpressionEvaluator(), initialContext).setValue(initialContext); VdmRuntimeError.abort(def.getLocation(), 4002, "Expression value is not in set bind", initialContext); nvpl = af.createPPatternAssistant().getNamedValues(def.getSetbind().getPattern(), v, initialContext); VdmRuntimeError.abort(def.getLocation(), (ValueException) e); else if (def.getSeqbind() != null)
private AVarDeclIR consLocalVarDecl(AEqualsDefinition equalsDef, IRInfo question) throws AnalysisException { STypeIR type = equalsDef.getExpType().apply(question.getTypeVisitor(), question); SPatternIR pattern = equalsDef.getPattern().apply(question.getPatternVisitor(), question); SExpIR exp = equalsDef.getTest().apply(question.getExpVisitor(), question); return consLocalVarDecl(equalsDef, type, pattern, exp); }
public ValueBindingObligation(PPattern pattern, PType type, PExp exp, IPOContextStack ctxt, IPogAssistantFactory af) throws AnalysisException { super(pattern, POType.VALUE_BINDING, ctxt, pattern.getLocation(), af); AExistsExp existsExp = new AExistsExp(); List<PPattern> patternList = new Vector<PPattern>(); patternList.add(pattern.clone()); ATypeMultipleBind typeBind = new ATypeMultipleBind(); typeBind.setPlist(patternList); typeBind.setType(type.clone()); List<PMultipleBind> bindList = new Vector<PMultipleBind>(); bindList.add(typeBind); existsExp.setBindList(bindList); AEqualsBinaryExp equals = AstExpressionFactory.newAEqualsBinaryExp(patternToExp(pattern.clone()), exp.clone()); existsExp.setPredicate(equals); stitch = existsExp; valuetree.setPredicate(ctxt.getPredWithContext(existsExp)); // valuetree.setContext(ctxt.getContextNodeList()); } }
@Override public ValueList caseAEqualsDefinition(AEqualsDefinition def, ObjectContext ctxt) throws AnalysisException { ValueList list = af.createPExpAssistant().getValues(def.getTest(), ctxt); if (def.getSetbind() != null) { list.addAll(af.createPBindAssistant().getBindValues(def.getSetbind(), ctxt, false)); } return list; }
@Override public PExp caseAEqualsDefinition(AEqualsDefinition def, Integer lineno) throws AnalysisException { return af.createPExpAssistant().findExpression(def.getTest(), lineno); }
if(node.getName() != null ) node.getName().apply(this); if(node.getClassDefinition() != null && !_visitedNodes.contains(node.getClassDefinition())) node.getClassDefinition().apply(this); if(node.getAccess() != null && !_visitedNodes.contains(node.getAccess())) node.getAccess().apply(this); if(node.getType() != null && !_visitedNodes.contains(node.getType())) node.getType().apply(this); if(node.getPattern() != null && !_visitedNodes.contains(node.getPattern())) node.getPattern().apply(this); if(node.getTypebind() != null && !_visitedNodes.contains(node.getTypebind())) node.getTypebind().apply(this); if(node.getSetbind() != null && !_visitedNodes.contains(node.getSetbind())) node.getSetbind().apply(this); if(node.getSeqbind() != null && !_visitedNodes.contains(node.getSeqbind()))
if(node.getName() != null ) node.getName().apply(this, question); if(node.getClassDefinition() != null && !_visitedNodes.contains(node.getClassDefinition())) node.getClassDefinition().apply(this, question); if(node.getAccess() != null && !_visitedNodes.contains(node.getAccess())) node.getAccess().apply(this, question); if(node.getType() != null && !_visitedNodes.contains(node.getType())) node.getType().apply(this, question); if(node.getPattern() != null && !_visitedNodes.contains(node.getPattern())) node.getPattern().apply(this, question); if(node.getTypebind() != null && !_visitedNodes.contains(node.getTypebind())) node.getTypebind().apply(this, question); if(node.getSetbind() != null && !_visitedNodes.contains(node.getSetbind())) node.getSetbind().apply(this, question); if(node.getSeqbind() != null && !_visitedNodes.contains(node.getSeqbind()))
@Override public PDefinition caseAEqualsDefinition(AEqualsDefinition node, Newquestion question) throws AnalysisException { List<PDefinition> defs = node.getDefs(); if (defs != null) { PDefinition def = af.createPDefinitionListAssistant().findName(defs, question.sought, question.scope); if (def != null) { return def; } } return null; }
if(node.getName() != null ) mergeReturns(retVal,node.getName().apply(this)); if(node.getClassDefinition() != null && !_visitedNodes.contains(node.getClassDefinition())) mergeReturns(retVal,node.getClassDefinition().apply(this)); if(node.getAccess() != null && !_visitedNodes.contains(node.getAccess())) mergeReturns(retVal,node.getAccess().apply(this)); if(node.getType() != null && !_visitedNodes.contains(node.getType())) mergeReturns(retVal,node.getType().apply(this)); if(node.getPattern() != null && !_visitedNodes.contains(node.getPattern())) mergeReturns(retVal,node.getPattern().apply(this)); if(node.getTypebind() != null && !_visitedNodes.contains(node.getTypebind())) mergeReturns(retVal,node.getTypebind().apply(this)); if(node.getSetbind() != null && !_visitedNodes.contains(node.getSetbind())) mergeReturns(retVal,node.getSetbind().apply(this)); if(node.getSeqbind() != null && !_visitedNodes.contains(node.getSeqbind()))
if(node.getName() != null ) mergeReturns(retVal,node.getName().apply(this, question)); if(node.getClassDefinition() != null && !_visitedNodes.contains(node.getClassDefinition())) mergeReturns(retVal,node.getClassDefinition().apply(this, question)); if(node.getAccess() != null && !_visitedNodes.contains(node.getAccess())) mergeReturns(retVal,node.getAccess().apply(this, question)); if(node.getType() != null && !_visitedNodes.contains(node.getType())) mergeReturns(retVal,node.getType().apply(this, question)); if(node.getPattern() != null && !_visitedNodes.contains(node.getPattern())) mergeReturns(retVal,node.getPattern().apply(this, question)); if(node.getTypebind() != null && !_visitedNodes.contains(node.getTypebind())) mergeReturns(retVal,node.getTypebind().apply(this, question)); if(node.getSetbind() != null && !_visitedNodes.contains(node.getSetbind())) mergeReturns(retVal,node.getSetbind().apply(this, question)); if(node.getSeqbind() != null && !_visitedNodes.contains(node.getSeqbind()))