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<out Int> vs Array<out String>.
This commit is contained in:
+5
-4
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user