public static AExplicitOperationDefinition newAExplicitOperationDefinition( ILexNameToken name, AOperationType type, List<PPattern> parameters, PExp precondition, PExp postcondition, PStm body) { AExplicitOperationDefinition result = new AExplicitOperationDefinition(); // Definition initialization initDefinition(result, Pass.DEFS, name.getLocation(), name, NameScope.GLOBAL); result.setType(type); result.setParameterPatterns(parameters); result.setPrecondition(precondition); result.setPostcondition(postcondition); result.setBody(body); result.setIsConstructor(false); return result; }
@Override public void caseAExplicitOperationDefinition( AExplicitOperationDefinition node, NewQuestion question) throws AnalysisException { node.setType(af.createPTypeAssistant().typeResolve(node.getType(), null, question.rootVisitor, question.question)); if (question.question.env.isVDMPP()) { node.getName().setTypeQualifier(((AOperationType) node.getType()).getParameters()); if (node.getName().getName().equals(node.getClassDefinition().getName().getName())) { node.setIsConstructor(true); node.getClassDefinition().setHasContructors(true); } } if (node.getPrecondition() != null) { node.getPredef().apply(this, question); } if (node.getPostcondition() != null) { node.getPostdef().apply(this, question); } for (PPattern p : node.getParameterPatterns()) { af.createPPatternAssistant().typeResolve(p, question.rootVisitor, question.question); } }
node.setType(node.getType()); return node.getType();