From dfad21270f881e14a20eb0f2666a41d24f7c5f15 Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Mon, 9 Nov 2020 18:54:56 +0300 Subject: [PATCH] [FIR] Remove workaround for #KT-43129 Revert changes from 4612f26b and a936386e --- .../jvm/JvmCallConflictResolverFactory.kt | 4 +- ...rloadResolutionByLambdaConflictResolver.kt | 46 ------------------- 2 files changed, 1 insertion(+), 49 deletions(-) delete mode 100644 compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ConeOverloadResolutionByLambdaConflictResolver.kt diff --git a/compiler/fir/jvm/src/org/jetbrains/kotlin/fir/resolve/calls/jvm/JvmCallConflictResolverFactory.kt b/compiler/fir/jvm/src/org/jetbrains/kotlin/fir/resolve/calls/jvm/JvmCallConflictResolverFactory.kt index e9212f516f1..e9ccd6be8d7 100644 --- a/compiler/fir/jvm/src/org/jetbrains/kotlin/fir/resolve/calls/jvm/JvmCallConflictResolverFactory.kt +++ b/compiler/fir/jvm/src/org/jetbrains/kotlin/fir/resolve/calls/jvm/JvmCallConflictResolverFactory.kt @@ -9,7 +9,6 @@ import org.jetbrains.kotlin.fir.NoMutableState import org.jetbrains.kotlin.fir.resolve.calls.ConeCallConflictResolverFactory import org.jetbrains.kotlin.fir.resolve.calls.ConeCompositeConflictResolver import org.jetbrains.kotlin.fir.resolve.calls.ConeOverloadConflictResolver -import org.jetbrains.kotlin.fir.resolve.calls.ConeOverloadResolutionByLambdaConflictResolve import org.jetbrains.kotlin.fir.resolve.inference.InferenceComponents import org.jetbrains.kotlin.resolve.calls.results.TypeSpecificityComparator import org.jetbrains.kotlin.resolve.jvm.JvmTypeSpecificityComparator @@ -23,8 +22,7 @@ object JvmCallConflictResolverFactory : ConeCallConflictResolverFactory() { val specificityComparator = JvmTypeSpecificityComparator(components.ctx) return ConeCompositeConflictResolver( ConeOverloadConflictResolver(specificityComparator, components), - ConeEquivalentCallConflictResolver(specificityComparator, components), - ConeOverloadResolutionByLambdaConflictResolve(components.session), + ConeEquivalentCallConflictResolver(specificityComparator, components) ) } } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ConeOverloadResolutionByLambdaConflictResolver.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ConeOverloadResolutionByLambdaConflictResolver.kt deleted file mode 100644 index 5f5cd835b51..00000000000 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ConeOverloadResolutionByLambdaConflictResolver.kt +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.fir.resolve.calls - -import org.jetbrains.kotlin.fir.FirSession -import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration -import org.jetbrains.kotlin.fir.declarations.FirFunction -import org.jetbrains.kotlin.fir.resolve.fqName -import org.jetbrains.kotlin.fir.resolve.inference.isBuiltinFunctionalType -import org.jetbrains.kotlin.fir.types.ConeKotlinType -import org.jetbrains.kotlin.fir.types.ConeTypeParameterType -import org.jetbrains.kotlin.fir.types.coneTypeSafe -import org.jetbrains.kotlin.resolve.descriptorUtil.OVERLOAD_RESOLUTION_BY_LAMBDA_ANNOTATION - -class ConeOverloadResolutionByLambdaConflictResolve(private val session: FirSession) : ConeCallConflictResolver() { - override fun chooseMaximallySpecificCandidates( - candidates: Set, - discriminateGenerics: Boolean, - discriminateAbstracts: Boolean - ): Set { - if (candidates.size == 1) return candidates - - val (candidatesWithAnnotation, candidatesWithoutAnnotation) = candidates.partition { candidate -> - (candidate.symbol.fir as? FirCallableDeclaration<*>)?.annotations?.any { annotation -> - annotation.fqName(session) == OVERLOAD_RESOLUTION_BY_LAMBDA_ANNOTATION - } == true - } - - if (candidatesWithoutAnnotation.size == 1) return setOf(candidatesWithoutAnnotation.single()) - - candidatesWithAnnotation.singleOrNull { candidate -> - (candidate.symbol.fir as? FirFunction<*>) - ?.valueParameters?.singleOrNull()?.returnTypeRef?.coneTypeSafe() - .let { type -> - type != null && type.isBuiltinFunctionalType(session) && type.typeArguments.last() is ConeTypeParameterType - } - }?.let { - return setOf(it) - } - - return candidates - } -}