ParameterList parameters, ProducedReference pr,
Tree.PositionalArgumentList pal,
List<ProducedType> inferredTypes) {
List<Parameter> params = parameters.getParameters();
for (int i=0; i<params.size(); i++) {
Parameter parameter = params.get(i);
List<Tree.PositionalArgument> args =
pal.getPositionalArguments();
if (args.size()>i) {
Tree.PositionalArgument a = args.get(i);
ProducedType at = a.getTypeModel();
if (a instanceof Tree.SpreadArgument) {
at = spreadType(at, unit, true);
List<Parameter> subList =
params.subList(i, params.size());
ProducedType ptt =
unit.getParameterTypesAsTupleType(subList, pr);
addToUnionOrIntersection(tp, inferredTypes,
inferTypeArg(tp, ptt, at, true, false,
new ArrayList<TypeParameter>()));
}
else if (a instanceof Tree.Comprehension) {
if (parameter.isSequenced()) {
inferTypeArgFromComprehension(tp, parameter,
((Tree.Comprehension) a),
inferredTypes);
}
}
else {
if (parameter.isSequenced()) {
inferTypeArgFromPositionalArgs(tp, parameter,
args.subList(i, args.size()),
inferredTypes);
break;
}