public AFunctionType getType(AImplicitFunctionDefinition impdef, List<PType> actualTypes) { Iterator<PType> ti = actualTypes.iterator(); AFunctionType ftype = (AFunctionType) impdef.getType(); if (impdef.getTypeParams() != null) { for (ILexNameToken pname : impdef.getTypeParams()) { PType ptype = ti.next(); // AFunctionTypeAssistent. ftype = (AFunctionType) af.createPTypeAssistant().polymorph(ftype, pname, ptype); } ftype.setInstantiated(true); } return ftype; }
private PExp buildMeasureLeft(AImplicitFunctionDefinition def, AApplyExp apply) throws AnalysisException { List<PPattern> paramPatterns = new LinkedList<PPattern>(); for (APatternListTypePair pair : def.getParamPatterns()) { paramPatterns.addAll(pair.getPatterns()); } return buildMeasureLeftParams(apply, def.getTypeParams(), def.getActualResult(), def.getMeasureName(), paramPatterns); }
public List<PDefinition> getTypeParamDefinitions( AImplicitFunctionDefinition node) { List<PDefinition> defs = new ArrayList<PDefinition>(); for (ILexNameToken pname : node.getTypeParams()) { PDefinition p = AstFactory.newALocalDefinition(pname.getLocation(), pname.clone(), NameScope.NAMES, AstFactory.newAParameterType(pname.clone())); // new ALocalDefinition( // pname.location, NameScope.NAMES,false,null, null, new // AParameterType(null,false,null,pname.clone()),false,pname.clone()); af.createPDefinitionAssistant().markUsed(p); defs.add(p); } return defs; }
public FunctionValue(IInterpreterAssistantFactory af, AImplicitFunctionDefinition fdef, PTypeList actualTypes, FunctionValue precondition, FunctionValue postcondition, Context freeVariables) { this(fdef, precondition, postcondition, freeVariables); this.typeValues = new NameValuePairList(); this.type = af.createAImplicitFunctionDefinitionAssistant().getType(fdef, actualTypes); Iterator<PType> ti = actualTypes.iterator(); for (ILexNameToken pname : fdef.getTypeParams()) { PType ptype = ti.next(); typeValues.add(new NameValuePair(pname, new ParameterValue(ptype))); } }
public static String getImplicitFunctionString(AImplicitFunctionDefinition d) { return d.getAccess() + " " + d.getName().getName() + (d.getTypeParams().isEmpty() ? "" : "[" + getTypeListString(d.getTypeParams()) + "]") + Utils.listToString("(", getString(d.getParamPatterns()), ", ", ")") + d.getResult() + (d.getBody() == null ? "" : " ==\n\t" + d.getBody()) + (d.getPrecondition() == null ? "" : "\n\tpre " + d.getPrecondition()) + (d.getPostcondition() == null ? "" : "\n\tpost " + d.getPostcondition()); }
public AExplicitFunctionDefinition getPostDefinition( AImplicitFunctionDefinition d) { List<List<PPattern>> parameters = getParamPatternList(d); parameters.get(0).add(d.getResult().getPattern().clone()); @SuppressWarnings("unchecked") AExplicitFunctionDefinition def = AstFactory.newAExplicitFunctionDefinition(d.getName().getPostName(d.getPostcondition().getLocation()), NameScope.GLOBAL, (List<ILexNameToken>) d.getTypeParams().clone(), af.createAFunctionTypeAssistant().getPostType((AFunctionType) d.getType()), parameters, d.getPostcondition(), null, null, false, null); def.setAccess(d.getAccess().clone()); def.setClassDefinition(d.getClassDefinition()); return def; }
func.uninstantiated = !def.getTypeParams().isEmpty(); nvl.add(new NameValuePair(def.getName(), func)); prefunc.uninstantiated = !def.getTypeParams().isEmpty(); postfunc.uninstantiated = !def.getTypeParams().isEmpty();
List<ILexNameToken> copy = new ArrayList<ILexNameToken>(node.getTypeParams()); for( ILexNameToken e : copy)
List<ILexNameToken> copy = new ArrayList<ILexNameToken>(node.getTypeParams()); for( ILexNameToken e : copy)
List<ILexNameToken> copy = new ArrayList<ILexNameToken>(node.getTypeParams()); for( ILexNameToken e : copy)
public AExplicitFunctionDefinition getPreDefinition( AImplicitFunctionDefinition d) { @SuppressWarnings("unchecked") AExplicitFunctionDefinition def = AstFactory.newAExplicitFunctionDefinition(d.getName().getPreName(d.getPrecondition().getLocation()), NameScope.GLOBAL, (List<ILexNameToken>) d.getTypeParams().clone(), af.createAFunctionTypeAssistant().getPreType((AFunctionType) d.getType()), getParamPatternList(d), d.getPrecondition(), null, null, false, null); def.setAccess(d.getAccess().clone()); def.setClassDefinition(d.getClassDefinition()); return def; }
if (ifd.getTypeParams() == null || ifd.getTypeParams().isEmpty()) else if (!ifd.getTypeParams().toString().equals(node.getTypeParams().toString())) TypeCheckerErrors.detail2("Imported", node.getTypeParams(), "Actual", ifd.getTypeParams());
List<ILexNameToken> copy = new ArrayList<ILexNameToken>(node.getTypeParams()); for( ILexNameToken e : copy)
List<ILexNameToken> copy = new ArrayList<ILexNameToken>(node.getTypeParams()); for( ILexNameToken e : copy)
List<ILexNameToken> typeParams = node.getTypeParams(); for (int i = 0; i < typeParams.size(); i++)
exp.setExportType(type); if (ifd.getTypeParams() == null) else if (!ifd.getTypeParams().equals(exp.getTypeParams())) TypeCheckerErrors.detail2("Exported", exp.getTypeParams(), "Actual", ifd.getTypeParams());
throws AnalysisException if (node.getTypeParams().size() > 0)
List<PDefinition> defs = new Vector<PDefinition>(); if (node.getTypeParams() != null)
typeParams = node.getImpdef().getTypeParams(); } else