K2: Simplify ConeConflictResolver hierarchy

Remove AbstractConeCallConflictResolver super class where it's actually
unnecessary
This commit is contained in:
Denis.Zharkov
2023-02-10 17:24:42 +01:00
committed by Space Team
parent 65f1485dc9
commit 1e1d122dd3
5 changed files with 11 additions and 27 deletions
@@ -25,7 +25,7 @@ object JsCallConflictResolverFactory : ConeCallConflictResolverFactory() {
return ConeCompositeConflictResolver( return ConeCompositeConflictResolver(
ConeOverloadConflictResolver(specificityComparator, components, transformerComponents), ConeOverloadConflictResolver(specificityComparator, components, transformerComponents),
ConeEquivalentCallConflictResolver(specificityComparator, components, transformerComponents), ConeEquivalentCallConflictResolver(specificityComparator, components, transformerComponents),
ConeIntegerOperatorConflictResolver(specificityComparator, components, transformerComponents), ConeIntegerOperatorConflictResolver,
FilteringOutOriginalInPresenceOfSmartCastConeCallConflictResolver FilteringOutOriginalInPresenceOfSmartCastConeCallConflictResolver
) )
} }
@@ -21,7 +21,7 @@ object NativeCallConflictResolverFactory : ConeCallConflictResolverFactory() {
return ConeCompositeConflictResolver( return ConeCompositeConflictResolver(
ConeOverloadConflictResolver(specificityComparator, components, transformerComponents), ConeOverloadConflictResolver(specificityComparator, components, transformerComponents),
ConeEquivalentCallConflictResolver(specificityComparator, components, transformerComponents), ConeEquivalentCallConflictResolver(specificityComparator, components, transformerComponents),
ConeIntegerOperatorConflictResolver(specificityComparator, components, transformerComponents), ConeIntegerOperatorConflictResolver,
FilteringOutOriginalInPresenceOfSmartCastConeCallConflictResolver FilteringOutOriginalInPresenceOfSmartCastConeCallConflictResolver
) )
} }
@@ -24,8 +24,8 @@ object JvmCallConflictResolverFactory : ConeCallConflictResolverFactory() {
return ConeCompositeConflictResolver( return ConeCompositeConflictResolver(
ConeOverloadConflictResolver(specificityComparator, components, transformerComponents), ConeOverloadConflictResolver(specificityComparator, components, transformerComponents),
ConeEquivalentCallConflictResolver(specificityComparator, components, transformerComponents), ConeEquivalentCallConflictResolver(specificityComparator, components, transformerComponents),
JvmPlatformOverloadsConflictResolver(specificityComparator, components, transformerComponents), JvmPlatformOverloadsConflictResolver(components.session),
ConeIntegerOperatorConflictResolver(specificityComparator, components, transformerComponents), ConeIntegerOperatorConflictResolver,
FilteringOutOriginalInPresenceOfSmartCastConeCallConflictResolver FilteringOutOriginalInPresenceOfSmartCastConeCallConflictResolver
) )
} }
@@ -6,30 +6,22 @@
package org.jetbrains.kotlin.fir.resolve.calls.jvm package org.jetbrains.kotlin.fir.resolve.calls.jvm
import org.jetbrains.kotlin.config.LanguageFeature 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.FirClass
import org.jetbrains.kotlin.fir.declarations.FirField import org.jetbrains.kotlin.fir.declarations.FirField
import org.jetbrains.kotlin.fir.declarations.FirProperty 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.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.symbols.ConeClassLikeLookupTag
import org.jetbrains.kotlin.fir.unwrapFakeOverrides
import org.jetbrains.kotlin.fir.unwrapSubstitutionOverrides
import org.jetbrains.kotlin.resolve.calls.results.TypeSpecificityComparator
class JvmPlatformOverloadsConflictResolver( class JvmPlatformOverloadsConflictResolver(private val session: FirSession) : ConeCallConflictResolver() {
specificityComparator: TypeSpecificityComparator,
inferenceComponents: InferenceComponents,
transformerComponents: BodyResolveComponents
) : AbstractConeCallConflictResolver(specificityComparator, inferenceComponents, transformerComponents) {
override fun chooseMaximallySpecificCandidates( override fun chooseMaximallySpecificCandidates(
candidates: Set<Candidate>, candidates: Set<Candidate>,
discriminateAbstracts: Boolean discriminateAbstracts: Boolean
): Set<Candidate> { ): Set<Candidate> {
if (!inferenceComponents.session.languageVersionSettings.supportsFeature(LanguageFeature.PreferJavaFieldOverload)) { if (!session.languageVersionSettings.supportsFeature(LanguageFeature.PreferJavaFieldOverload)) {
return candidates return candidates
} }
val result = mutableSetOf<Candidate>() val result = mutableSetOf<Candidate>()
@@ -83,7 +75,6 @@ class JvmPlatformOverloadsConflictResolver(
private fun ConeClassLikeLookupTag.strictlyDerivedFrom(other: ConeClassLikeLookupTag): Boolean { private fun ConeClassLikeLookupTag.strictlyDerivedFrom(other: ConeClassLikeLookupTag): Boolean {
if (this == other) return false if (this == other) return false
val session = inferenceComponents.session
val thisClass = this.toSymbol(session)?.fir as? FirClass ?: return false val thisClass = this.toSymbol(session)?.fir as? FirClass ?: return false
return thisClass.isSubclassOf(other, session, isStrict = true) return thisClass.isSubclassOf(other, session, isStrict = true)
@@ -5,16 +5,9 @@
package org.jetbrains.kotlin.fir.resolve.calls 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.fir.scopes.impl.isWrappedIntegerOperator
import org.jetbrains.kotlin.resolve.calls.results.TypeSpecificityComparator
class ConeIntegerOperatorConflictResolver( object ConeIntegerOperatorConflictResolver : ConeCallConflictResolver() {
specificityComparator: TypeSpecificityComparator,
inferenceComponents: InferenceComponents,
transformerComponents: BodyResolveComponents
) : AbstractConeCallConflictResolver(specificityComparator, inferenceComponents, transformerComponents) {
override fun chooseMaximallySpecificCandidates( override fun chooseMaximallySpecificCandidates(
candidates: Set<Candidate>, candidates: Set<Candidate>,
discriminateAbstracts: Boolean discriminateAbstracts: Boolean