From 1e1d122dd3d968cd0a1ab5bb5c485dfea245feb2 Mon Sep 17 00:00:00 2001 From: "Denis.Zharkov" Date: Fri, 10 Feb 2023 17:24:42 +0100 Subject: [PATCH] K2: Simplify ConeConflictResolver hierarchy Remove AbstractConeCallConflictResolver super class where it's actually unnecessary --- .../session/JsConeConflictResolverFactory.kt | 2 +- .../NativeCallConflictResolverFactory.kt | 2 +- .../jvm/JvmCallConflictResolverFactory.kt | 4 ++-- .../JvmPlatformOverloadsConflictResolver.kt | 21 ++++++------------- .../ConeIntegerOperatorConflictResolver.kt | 9 +------- 5 files changed, 11 insertions(+), 27 deletions(-) diff --git a/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/JsConeConflictResolverFactory.kt b/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/JsConeConflictResolverFactory.kt index 510fc7677d1..7ef82bb6d6e 100644 --- a/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/JsConeConflictResolverFactory.kt +++ b/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/JsConeConflictResolverFactory.kt @@ -25,7 +25,7 @@ object JsCallConflictResolverFactory : ConeCallConflictResolverFactory() { return ConeCompositeConflictResolver( ConeOverloadConflictResolver(specificityComparator, components, transformerComponents), ConeEquivalentCallConflictResolver(specificityComparator, components, transformerComponents), - ConeIntegerOperatorConflictResolver(specificityComparator, components, transformerComponents), + ConeIntegerOperatorConflictResolver, FilteringOutOriginalInPresenceOfSmartCastConeCallConflictResolver ) } diff --git a/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/NativeCallConflictResolverFactory.kt b/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/NativeCallConflictResolverFactory.kt index 0a618b79070..eb1411b5856 100644 --- a/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/NativeCallConflictResolverFactory.kt +++ b/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/NativeCallConflictResolverFactory.kt @@ -21,7 +21,7 @@ object NativeCallConflictResolverFactory : ConeCallConflictResolverFactory() { return ConeCompositeConflictResolver( ConeOverloadConflictResolver(specificityComparator, components, transformerComponents), ConeEquivalentCallConflictResolver(specificityComparator, components, transformerComponents), - ConeIntegerOperatorConflictResolver(specificityComparator, components, transformerComponents), + ConeIntegerOperatorConflictResolver, FilteringOutOriginalInPresenceOfSmartCastConeCallConflictResolver ) } diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/resolve/calls/jvm/JvmCallConflictResolverFactory.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/resolve/calls/jvm/JvmCallConflictResolverFactory.kt index 6b17a347bc4..669e8f54dbc 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/resolve/calls/jvm/JvmCallConflictResolverFactory.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/resolve/calls/jvm/JvmCallConflictResolverFactory.kt @@ -24,8 +24,8 @@ object JvmCallConflictResolverFactory : ConeCallConflictResolverFactory() { return ConeCompositeConflictResolver( ConeOverloadConflictResolver(specificityComparator, components, transformerComponents), ConeEquivalentCallConflictResolver(specificityComparator, components, transformerComponents), - JvmPlatformOverloadsConflictResolver(specificityComparator, components, transformerComponents), - ConeIntegerOperatorConflictResolver(specificityComparator, components, transformerComponents), + JvmPlatformOverloadsConflictResolver(components.session), + ConeIntegerOperatorConflictResolver, FilteringOutOriginalInPresenceOfSmartCastConeCallConflictResolver ) } diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/resolve/calls/jvm/JvmPlatformOverloadsConflictResolver.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/resolve/calls/jvm/JvmPlatformOverloadsConflictResolver.kt index 00dee73996f..5bcadfa5ae1 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/resolve/calls/jvm/JvmPlatformOverloadsConflictResolver.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/resolve/calls/jvm/JvmPlatformOverloadsConflictResolver.kt @@ -6,30 +6,22 @@ package org.jetbrains.kotlin.fir.resolve.calls.jvm import org.jetbrains.kotlin.config.LanguageFeature -import org.jetbrains.kotlin.fir.containingClassLookupTag +import org.jetbrains.kotlin.fir.* import org.jetbrains.kotlin.fir.declarations.FirClass import org.jetbrains.kotlin.fir.declarations.FirField import org.jetbrains.kotlin.fir.declarations.FirProperty -import org.jetbrains.kotlin.fir.languageVersionSettings -import org.jetbrains.kotlin.fir.resolve.* -import org.jetbrains.kotlin.fir.resolve.calls.AbstractConeCallConflictResolver import org.jetbrains.kotlin.fir.resolve.calls.Candidate -import org.jetbrains.kotlin.fir.resolve.inference.InferenceComponents +import org.jetbrains.kotlin.fir.resolve.calls.ConeCallConflictResolver +import org.jetbrains.kotlin.fir.resolve.isSubclassOf +import org.jetbrains.kotlin.fir.resolve.toSymbol import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag -import org.jetbrains.kotlin.fir.unwrapFakeOverrides -import org.jetbrains.kotlin.fir.unwrapSubstitutionOverrides -import org.jetbrains.kotlin.resolve.calls.results.TypeSpecificityComparator -class JvmPlatformOverloadsConflictResolver( - specificityComparator: TypeSpecificityComparator, - inferenceComponents: InferenceComponents, - transformerComponents: BodyResolveComponents -) : AbstractConeCallConflictResolver(specificityComparator, inferenceComponents, transformerComponents) { +class JvmPlatformOverloadsConflictResolver(private val session: FirSession) : ConeCallConflictResolver() { override fun chooseMaximallySpecificCandidates( candidates: Set, discriminateAbstracts: Boolean ): Set { - if (!inferenceComponents.session.languageVersionSettings.supportsFeature(LanguageFeature.PreferJavaFieldOverload)) { + if (!session.languageVersionSettings.supportsFeature(LanguageFeature.PreferJavaFieldOverload)) { return candidates } val result = mutableSetOf() @@ -83,7 +75,6 @@ class JvmPlatformOverloadsConflictResolver( private fun ConeClassLikeLookupTag.strictlyDerivedFrom(other: ConeClassLikeLookupTag): Boolean { if (this == other) return false - val session = inferenceComponents.session val thisClass = this.toSymbol(session)?.fir as? FirClass ?: return false return thisClass.isSubclassOf(other, session, isStrict = true) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ConeIntegerOperatorConflictResolver.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ConeIntegerOperatorConflictResolver.kt index f4d8fd52ec4..53dc4219bc2 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ConeIntegerOperatorConflictResolver.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ConeIntegerOperatorConflictResolver.kt @@ -5,16 +5,9 @@ package org.jetbrains.kotlin.fir.resolve.calls -import org.jetbrains.kotlin.fir.resolve.BodyResolveComponents -import org.jetbrains.kotlin.fir.resolve.inference.InferenceComponents import org.jetbrains.kotlin.fir.scopes.impl.isWrappedIntegerOperator -import org.jetbrains.kotlin.resolve.calls.results.TypeSpecificityComparator -class ConeIntegerOperatorConflictResolver( - specificityComparator: TypeSpecificityComparator, - inferenceComponents: InferenceComponents, - transformerComponents: BodyResolveComponents -) : AbstractConeCallConflictResolver(specificityComparator, inferenceComponents, transformerComponents) { +object ConeIntegerOperatorConflictResolver : ConeCallConflictResolver() { override fun chooseMaximallySpecificCandidates( candidates: Set, discriminateAbstracts: Boolean