public TCExplicitFunctionDefinition( TCAccessSpecifier accessSpecifier, TCNameToken name, TCNameList typeParams, TCFunctionType type, TCPatternListList parameters, TCExpression body, TCExpression precondition, TCExpression postcondition, boolean typeInvariant, TCNameToken measure) { super(Pass.DEFS, name.getLocation(), name, NameScope.GLOBAL); this.accessSpecifier = accessSpecifier; this.typeParams = typeParams; this.type = type; this.paramPatternList = parameters; this.precondition = precondition; this.postcondition = postcondition; this.body = body; this.isTypeInvariant = typeInvariant; this.measure = measure; this.isCurried = parameters.size() > 1; type.definitions = new TCDefinitionList(this); type.instantiated = typeParams == null ? null : false; }
private TCExplicitFunctionDefinition getPostDefinition() { TCPatternList last = new TCPatternList(); int psize = paramPatternList.size(); for (TCPattern p : paramPatternList.get(psize - 1)) { last.add(p); } last.add(new TCIdentifierPattern(name.getResultName(location))); TCPatternListList parameters = new TCPatternListList(); if (psize > 1) { parameters.addAll(paramPatternList.subList(0, psize - 1)); } parameters.add(last); TCExplicitFunctionDefinition def = new TCExplicitFunctionDefinition( accessSpecifier, name.getPostName(postcondition.location), typeParams, type.getCurriedPostType(isCurried), parameters, postcondition, null, null, false, null); def.classDefinition = classDefinition; return def; }