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(
|
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
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -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
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -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
-15
@@ -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)
|
||||||
|
|||||||
+1
-8
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user