diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/resolve/impl/PositionalArgumentMapping.kt b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/resolve/impl/PositionalArgumentMapping.kt index 102279b1f831..95c19d56cec0 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/resolve/impl/PositionalArgumentMapping.kt +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/resolve/impl/PositionalArgumentMapping.kt @@ -58,23 +58,23 @@ private fun mapByPosition(arguments: List, return null } - val result = LinkedHashMap(parameterCount) + val result = ArrayList>(parameterCount) val argumentIterator = arguments.iterator() var optionalArgsLeft = argumentsCount - requiredParametersCount for (parameter in parameters) { val optional = isOptional(parameter) - if (argumentIterator.hasNext()) { + val argument = if (argumentIterator.hasNext()) { if (!optional) { - result[parameter] = argumentIterator.next() + argumentIterator.next() } else if (optionalArgsLeft > 0) { optionalArgsLeft-- - result[parameter] = argumentIterator.next() + argumentIterator.next() } else { // No argument passed for this parameter. // Don't call next() on argument iterator, so current argument will be used for next parameter. - result[parameter] = null + null } } else { @@ -82,13 +82,13 @@ private fun mapByPosition(arguments: List, require(optional || partial) { "argumentsCount < requiredParameters. This should happen only in partial mode" } - result[parameter] = null + null } + result += Pair(parameter, argument) } require(!argumentIterator.hasNext() || partial) { "argumentsCount > parametersCount. This should happen only in partial mode." } - require(result.size == parameterCount) - return result + return result.toMap(LinkedHashMap()) }