K2: Simplify ConeConflictResolver hierarchy
Remove AbstractConeCallConflictResolver super class where it's actually unnecessary
This commit is contained in:
committed by
Space Team
parent
65f1485dc9
commit
1e1d122dd3
+1
-1
@@ -25,7 +25,7 @@ object JsCallConflictResolverFactory : ConeCallConflictResolverFactory() {
|
||||
return ConeCompositeConflictResolver(
|
||||
ConeOverloadConflictResolver(specificityComparator, components, transformerComponents),
|
||||
ConeEquivalentCallConflictResolver(specificityComparator, components, transformerComponents),
|
||||
ConeIntegerOperatorConflictResolver(specificityComparator, components, transformerComponents),
|
||||
ConeIntegerOperatorConflictResolver,
|
||||
FilteringOutOriginalInPresenceOfSmartCastConeCallConflictResolver
|
||||
)
|
||||
}
|
||||
|
||||
+1
-1
@@ -21,7 +21,7 @@ object NativeCallConflictResolverFactory : ConeCallConflictResolverFactory() {
|
||||
return ConeCompositeConflictResolver(
|
||||
ConeOverloadConflictResolver(specificityComparator, components, transformerComponents),
|
||||
ConeEquivalentCallConflictResolver(specificityComparator, components, transformerComponents),
|
||||
ConeIntegerOperatorConflictResolver(specificityComparator, components, transformerComponents),
|
||||
ConeIntegerOperatorConflictResolver,
|
||||
FilteringOutOriginalInPresenceOfSmartCastConeCallConflictResolver
|
||||
)
|
||||
}
|
||||
|
||||
+2
-2
@@ -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
|
||||
)
|
||||
}
|
||||
|
||||
+6
-15
@@ -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<Candidate>,
|
||||
discriminateAbstracts: Boolean
|
||||
): Set<Candidate> {
|
||||
if (!inferenceComponents.session.languageVersionSettings.supportsFeature(LanguageFeature.PreferJavaFieldOverload)) {
|
||||
if (!session.languageVersionSettings.supportsFeature(LanguageFeature.PreferJavaFieldOverload)) {
|
||||
return candidates
|
||||
}
|
||||
val result = mutableSetOf<Candidate>()
|
||||
@@ -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)
|
||||
|
||||
+1
-8
@@ -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<Candidate>,
|
||||
discriminateAbstracts: Boolean
|
||||
|
||||
Reference in New Issue
Block a user