From e9ef6dbc2838d69ce779efaf8228f4944158436e Mon Sep 17 00:00:00 2001 From: Ilya Gorbunov Date: Wed, 13 May 2020 20:08:28 +0300 Subject: [PATCH] Discriminate OverloadResolutionByLambdaReturnType annotated overloads... instead of preferring them in case of unsolvable ambiguity. --- .../org/jetbrains/kotlin/resolve/calls/KotlinCallResolver.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/KotlinCallResolver.kt b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/KotlinCallResolver.kt index 9119f7c9ff0..ca07f9d8776 100644 --- a/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/KotlinCallResolver.kt +++ b/compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/KotlinCallResolver.kt @@ -144,7 +144,7 @@ class KotlinCallResolver( candidates.all { resolutionCallbacks.inferenceSession.shouldRunCompletion(it) } ) { val candidatesWithAnnotation = - candidates.filterTo(mutableSetOf()) { it.resolvedCall.candidateDescriptor.annotations.hasAnnotation(OVERLOAD_RESOLUTION_BY_LAMBDA_ANNOTATION) } + candidates.filter { it.resolvedCall.candidateDescriptor.annotations.hasAnnotation(OVERLOAD_RESOLUTION_BY_LAMBDA_ANNOTATION) } if (candidatesWithAnnotation.isNotEmpty()) { val newCandidates = kotlinCallCompleter.chooseCandidateRegardingFactoryPatternResolution(maximallySpecificCandidates, resolutionCallbacks) maximallySpecificCandidates = overloadingConflictResolver.chooseMaximallySpecificCandidates( @@ -154,7 +154,7 @@ class KotlinCallResolver( ) if (maximallySpecificCandidates.size > 1) { - maximallySpecificCandidates = candidatesWithAnnotation + maximallySpecificCandidates = candidates.toMutableSet().apply { removeAll(candidatesWithAnnotation) } } } }