From 232d0694934510aa93c651f208145163d6f2fae7 Mon Sep 17 00:00:00 2001 From: Stanislav Erokhin Date: Tue, 15 May 2018 18:17:19 +0300 Subject: [PATCH] Minor. Use getExpectedType as util function for parameter type calculation For almost all cases this change do nothing, because if parameter isn't vararg, then both methods (FlatSignature.argumentValueType & getExpectedType) return same value. Moreover if it is vararg parameter and spread operator is not used, then results will be the same. We can observe difference only when spread operator used and when we compare two candidates corresponding parameters for both spread arguments should be vararg parameters. I.e. old way compares: Int vs String new way compares: Array vs Array. --- .../calls/components/NewOverloadingConflictResolver.kt | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/components/NewOverloadingConflictResolver.kt b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/components/NewOverloadingConflictResolver.kt index f17eb26e034..7c416c3ac85 100644 --- a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/components/NewOverloadingConflictResolver.kt +++ b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/components/NewOverloadingConflictResolver.kt @@ -19,9 +19,10 @@ package org.jetbrains.kotlin.resolve.calls.components import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.resolve.calls.inference.components.ConstraintInjector import org.jetbrains.kotlin.resolve.calls.inference.components.SimpleConstraintSystemImpl -import org.jetbrains.kotlin.resolve.calls.model.* +import org.jetbrains.kotlin.resolve.calls.model.KotlinCallArgument +import org.jetbrains.kotlin.resolve.calls.model.KotlinResolutionCandidate +import org.jetbrains.kotlin.resolve.calls.model.ResolvedCallArgument import org.jetbrains.kotlin.resolve.calls.results.FlatSignature -import org.jetbrains.kotlin.resolve.calls.results.FlatSignature.Companion.argumentValueType import org.jetbrains.kotlin.resolve.calls.results.OverloadingConflictResolver import org.jetbrains.kotlin.resolve.calls.results.TypeSpecificityComparator import org.jetbrains.kotlin.types.KotlinType @@ -59,9 +60,9 @@ class NewOverloadingConflictResolver( numDefaults++ } else { val originalValueParameter = originalValueParameters[valueParameter.index] - val parameterType = originalValueParameter.argumentValueType for (valueArgument in resolvedValueArgument.arguments) { - valueArgumentToParameterType[valueArgument] = parameterType + valueArgumentToParameterType[valueArgument] = + valueArgument.getExpectedType(originalValueParameter, candidate.callComponents.languageVersionSettings) } } }