diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/ValueArgumentsToParametersMapper.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/ValueArgumentsToParametersMapper.java index 00a84bda45a..bfca07f031f 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/ValueArgumentsToParametersMapper.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/ValueArgumentsToParametersMapper.java @@ -102,20 +102,18 @@ import static org.jetbrains.jet.lang.resolve.calls.ValueArgumentsToParametersMap // We saw only positioned arguments so far private final ProcessorState positionedOnly = new ProcessorState() { - private Queue valueParameterQueue; + private int currentParameter = 0; @Nullable public ValueParameterDescriptor nextValueParameter() { - if (valueParameterQueue == null) { - valueParameterQueue = new LinkedList(candidateCall.getCandidateDescriptor().getValueParameters()); - } + List parameters = candidateCall.getCandidateDescriptor().getValueParameters(); + if (currentParameter >= parameters.size()) return null; - ValueParameterDescriptor head = valueParameterQueue.peek(); - if (head == null) return null; + ValueParameterDescriptor head = parameters.get(currentParameter); // If we found a vararg parameter, we are stuck with it forever if (head.getVarargElementType() == null) { - valueParameterQueue.remove(); + currentParameter++; } return head;