[FE] Fix TypeParameterUpperBounds incompatibility priority

^KT-60902 Fixed
Review: https://jetbrains.team/p/kt/reviews/11039/timeline

We should prioritize to return STRONG incompatibilities over WEAK
incompatibilities. But this invariant broke in `areCompatibleCallables`,
because `areCompatibleTypeParameters` returns incompatibilities of both
types, and `areCompatibleTypeParameters` is called in WEAK
incompatibilities section.

The fix is to split `areCompatibleTypeParameters` into two functions:
`areStrongIncompatibleTypeParameters` and
`areWeakIncompatibleTypeParameters`. And call each of this function in
appropriate `areCompatibleCallables` sections.
This commit is contained in:
Nikita Bobko
2023-08-02 19:12:41 +02:00
committed by teamcity
parent fd5e97ff23
commit eac4b81b11
5 changed files with 59 additions and 7 deletions
@@ -0,0 +1,13 @@
// FIR_IDENTICAL
// MODULE: m1-common
// FILE: common.kt
public expect fun <T : Comparable<T>> Array<out T>.foo()
// MODULE: m2-jvm()()(m1-common)
// FILE: jvm.kt
public actual fun <T : Comparable<T>> Array<out T>.foo() {
}
private fun <T> Array<out T>.foo() {
}