public InferenceSolver_c(JL5ProcedureInstance pi, List<Type> actuals, JL5TypeSystem ts) { this.pi = pi; this.typeVariables = pi.typeVariables(); this.actuals = actuals; this.formals = pi.formalTypes(); this.ts = ts; }
private List<Constraint> getInitialConstraints() { List<Constraint> constraints = new ArrayList<Constraint>(); int numFormals = formals.size(); for (int i = 0; i < numFormals - 1; i++) { constraints.add(new SubConversionConstraint(actuals.get(i), formals.get(i), this)); } if (numFormals > 0) { if (pi != null && pi.isVariableArrity()) { JL5ArrayType lastFormal = (JL5ArrayType) pi.formalTypes().get(numFormals - 1); for (int i = numFormals - 1; i < actuals.size() - 1; i++) { constraints.add(new SubConversionConstraint(actuals.get(i), lastFormal.base(), this)); } } constraints.add( new SubConversionConstraint( actuals.get(numFormals - 1), formals.get(numFormals - 1), this)); } return constraints; }