From bd713db70ebad1d4866ff66692d66e9810d4abd1 Mon Sep 17 00:00:00 2001 From: Roman Golyshev Date: Fri, 27 Dec 2019 16:40:25 +0300 Subject: [PATCH] KT-35258 Refactor `mapArgumentsToParameters` - We assume that, if method has no stable parameters names, `parametersByName` should be empty --- .../src/org/jetbrains/kotlin/idea/core/Utils.kt | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/Utils.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/Utils.kt index cbacdaba8a3..8ec420e3bae 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/Utils.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/Utils.kt @@ -25,6 +25,7 @@ import org.jetbrains.kotlin.resolve.DelegatingBindingTrace import org.jetbrains.kotlin.resolve.QualifiedExpressionResolver import org.jetbrains.kotlin.resolve.bindingContextUtil.getDataFlowInfoBefore import org.jetbrains.kotlin.resolve.calls.CallResolver +import org.jetbrains.kotlin.resolve.calls.components.isVararg import org.jetbrains.kotlin.resolve.calls.context.BasicCallResolutionContext import org.jetbrains.kotlin.resolve.calls.context.CheckArgumentTypesMode import org.jetbrains.kotlin.resolve.calls.context.ContextDependency @@ -39,12 +40,15 @@ import org.jetbrains.kotlin.types.checker.KotlinTypeChecker import org.jetbrains.kotlin.types.typeUtil.isSubtypeOf import java.util.* +/** + * See `ArgumentsToParametersMapper` class in the compiler. + */ fun Call.mapArgumentsToParameters(targetDescriptor: CallableDescriptor): Map { val parameters = targetDescriptor.valueParameters if (parameters.isEmpty()) return emptyMap() val map = HashMap() - val parametersByName = parameters.associateBy { it.name } + val parametersByName = if (targetDescriptor.hasStableParameterNames()) parameters.associateBy { it.name } else emptyMap() var positionalArgumentIndex: Int? = 0 @@ -55,11 +59,9 @@ fun Call.mapArgumentsToParameters(targetDescriptor: CallableDescriptor): Map