[FE] Type-safety refactoring: extract main logic of areCompatibleCallables into two functions

Review: https://jetbrains.team/p/kt/reviews/11039/timeline

Extract main logic of `areCompatibleCallables` into two functions:
`areStrongIncompatibleCallables` and `areWeakIncompatibleCallables`.

The main point is that `areStrongIncompatibleCallables` &
`areWeakIncompatibleCallables` have very specific return types.

This commit doesn't change any logic. The commit makes the API more
type-safe ensuring that bugs like in previous commit (KT-60902) won't
happen again
This commit is contained in:
Nikita Bobko
2023-08-02 18:27:54 +02:00
committed by teamcity
parent eac4b81b11
commit 98ec13b51a
4 changed files with 85 additions and 75 deletions
@@ -505,11 +505,10 @@ class ExpectedActualDeclarationChecker(
companion object {
fun Map<out ExpectActualCompatibility<MemberDescriptor>, Collection<MemberDescriptor>>.allStrongIncompatibilities(): Boolean =
this.keys.all { it is Incompatible && it.kind == IncompatibilityKind.STRONG }
this.keys.all { it is Incompatible.StrongIncompatible }
internal fun ExpectActualCompatibility<MemberDescriptor>.isCompatibleOrWeakCompatible() =
this is Compatible ||
this is Incompatible && kind == IncompatibilityKind.WEAK
this is Compatible || this is Incompatible.WeakIncompatible
}
}