if(node.getCtorDefinition() != null && !_visitedNodes.contains(node.getCtorDefinition())) node.getCtorDefinition().apply(this);
if(node.getCtorDefinition() != null && !_visitedNodes.contains(node.getCtorDefinition())) node.getCtorDefinition().apply(this, question);
if(node.getCtorDefinition() != null && !_visitedNodes.contains(node.getCtorDefinition())) node.getCtorDefinition().apply(this);
if(node.getCtorDefinition() != null && !_visitedNodes.contains(node.getCtorDefinition())) mergeReturns(retVal,node.getCtorDefinition().apply(this, question));
if(node.getCtorDefinition() != null && !_visitedNodes.contains(node.getCtorDefinition())) mergeReturns(retVal,node.getCtorDefinition().apply(this));
@Override public Value caseANewExp(ANewExp node, Context ctxt) throws AnalysisException { BreakpointManager.getBreakpoint(node).check(node.getLocation(), ctxt); node.getClassName().getLocation().hit(); try { ValueList argvals = new ValueList(); for (PExp arg : node.getArgs()) { argvals.add(arg.apply(VdmRuntime.getExpressionEvaluator(), ctxt)); } ObjectValue objval = ctxt.assistantFactory.createSClassDefinitionAssistant().newInstance(node.getClassdef(), node.getCtorDefinition(), argvals, ctxt); if (objval.invlistener != null) { // Check the initial values of the object's fields objval.invlistener.doInvariantChecks = true; objval.invlistener.changedValue(node.getLocation(), objval, ctxt); } return objval; } catch (ValueException e) { return VdmRuntimeError.abort(node.getLocation(), e); } }