/** * Called by the {@link AFieldStateDesignator} node from {@link AFieldStateDesignator#apply(IAnalysis)}. * @param node the calling {@link AFieldStateDesignator} node */ public void caseAFieldStateDesignator(AFieldStateDesignator node) throws AnalysisException { _visitedNodes.add(node); inAFieldStateDesignator(node); if(node.getType() != null && !_visitedNodes.contains(node.getType())) { node.getType().apply(this); } if(node.getObject() != null && !_visitedNodes.contains(node.getObject())) { node.getObject().apply(this); } if(node.getField() != null ) { node.getField().apply(this); } if(node.getObjectfield() != null ) { node.getObjectfield().apply(this); } outAFieldStateDesignator(node); }
@Override public SStateDesignatorIR caseAFieldStateDesignator( AFieldStateDesignator node, IRInfo question) throws AnalysisException { PType type = node.getType(); PStateDesignator stateDesignator = node.getObject(); String fieldName = node.getField().getName(); STypeIR typeCg = type.apply(question.getTypeVisitor(), question); SStateDesignatorIR stateDesignatorCg = stateDesignator.apply(question.getStateDesignatorVisitor(), question); AFieldStateDesignatorIR field = new AFieldStateDesignatorIR(); field.setType(typeCg); field.setObject(stateDesignatorCg); field.setField(fieldName); return field; }
/** * Called by the {@link AFieldStateDesignator} node from {@link AFieldStateDesignator#apply(IAnalysis)}. * @param node the calling {@link AFieldStateDesignator} node */ public void caseAFieldStateDesignator(AFieldStateDesignator node, Q question) throws AnalysisException { _visitedNodes.add(node); inAFieldStateDesignator(node, question); if(node.getType() != null && !_visitedNodes.contains(node.getType())) { node.getType().apply(this, question); } if(node.getObject() != null && !_visitedNodes.contains(node.getObject())) { node.getObject().apply(this, question); } if(node.getField() != null ) { node.getField().apply(this, question); } if(node.getObjectfield() != null ) { node.getObjectfield().apply(this, question); } outAFieldStateDesignator(node, question); }
/** * Called by the {@link AFieldStateDesignator} node from {@link AFieldStateDesignator#apply(IPOFAnalysis)}. * @param node the calling {@link AFieldStateDesignator} node */ public void caseAFieldStateDesignator(AFieldStateDesignator node) throws AnalysisException { _visitedNodes.add(node); inAFieldStateDesignator(node); if(node.getType() != null && !_visitedNodes.contains(node.getType())) { node.getType().apply(this); } if(node.getObject() != null && !_visitedNodes.contains(node.getObject())) { node.getObject().apply(this); } if(node.getField() != null ) { node.getField().apply(this); } if(node.getObjectfield() != null ) { node.getObjectfield().apply(this); } outAFieldStateDesignator(node); }
/** * Called by the {@link AFieldStateDesignator} node from {@link AFieldStateDesignator#apply(IAnalysis)}. * @param node the calling {@link AFieldStateDesignator} node */ public A caseAFieldStateDesignator(AFieldStateDesignator node, Q question) throws AnalysisException { _visitedNodes.add(node); A retVal = createNewReturnValue(node, question); mergeReturns(retVal,inAFieldStateDesignator(node, question)); if(node.getType() != null && !_visitedNodes.contains(node.getType())) { mergeReturns(retVal,node.getType().apply(this, question)); } if(node.getObject() != null && !_visitedNodes.contains(node.getObject())) { mergeReturns(retVal,node.getObject().apply(this, question)); } if(node.getField() != null ) { mergeReturns(retVal,node.getField().apply(this, question)); } if(node.getObjectfield() != null ) { mergeReturns(retVal,node.getObjectfield().apply(this, question)); } mergeReturns(retVal,outAFieldStateDesignator(node, question)); return retVal; }
/** * Called by the {@link AFieldStateDesignator} node from {@link AFieldStateDesignator#apply(IAnalysis)}. * @param node the calling {@link AFieldStateDesignator} node */ public A caseAFieldStateDesignator(AFieldStateDesignator node) throws AnalysisException { _visitedNodes.add(node); A retVal = createNewReturnValue(node); mergeReturns(retVal,inAFieldStateDesignator(node)); if(node.getType() != null && !_visitedNodes.contains(node.getType())) { mergeReturns(retVal,node.getType().apply(this)); } if(node.getObject() != null && !_visitedNodes.contains(node.getObject())) { mergeReturns(retVal,node.getObject().apply(this)); } if(node.getField() != null ) { mergeReturns(retVal,node.getField().apply(this)); } if(node.getObjectfield() != null ) { mergeReturns(retVal,node.getObjectfield().apply(this)); } mergeReturns(retVal,outAFieldStateDesignator(node)); return retVal; }
@Override public PExp caseAFieldStateDesignator(AFieldStateDesignator node) throws AnalysisException { // pack this with the output of the visitor recursive calls. PExp value = node.getObject().apply(this); AFieldExp fieldExp = new AFieldExp(); fieldExp.setObject(value.clone()); fieldExp.setField(node.getField().clone()); // Not 100% sure these 2 match fieldExp.setMemberName(node.getObjectfield().clone()); fieldExp.setType(node.getType().clone()); return fieldExp; }
result = node.getObject().apply(VdmRuntime.getStatementEvaluator(), ctxt).deref();
PType type = node.getObject().apply(THIS, question); PTypeSet result = new PTypeSet(question.assistantFactory); boolean unique = !question.assistantFactory.createPTypeAssistant().isUnion(type); String cname = ctype.getName().getName(); node.setObjectfield(new LexNameToken(cname, field.getName(), node.getObject().getLocation())); PDefinition fdef = question.assistantFactory.createPDefinitionAssistant().findName(ctype.getClassdef(), node.getObjectfield(), NameScope.STATE); TypeCheckerErrors.detail2("Expression", node.getObject(), "Type", type); node.setType(AstFactory.newAUnknownType(field.getLocation())); return node.getType();