K2: change logic of result type search in ILT case

Related to KT-57487, KT-57703
This commit is contained in:
Mikhail Glukhikh
2023-03-30 12:13:32 +02:00
committed by Space Team
parent 27c4a7b7ef
commit 08c22c388c
10 changed files with 128 additions and 7 deletions
@@ -0,0 +1,35 @@
// WITH_STDLIB
// FILE: First.java
public class First implements Comparable<First> {
public static First compose(int something) {
return null;
}
}
// FILE: Second.java
public class Second implements Comparable<Second> {
public static Second compose(String something) {
return null;
}
}
// FILE: complexMapping.kt
private fun <R : Comparable<R>> range(vararg ranges: Pair<R?, R?>): Ranges<R> = null!!
private abstract class Ranges<C : Comparable<C>> {
abstract fun <M : Comparable<M>> map(transform: (C) -> M): Ranges<M>
}
private val INF: Nothing? = null
private val foo = listOf(
range(0 to 1) to range(INF to ""),
range(2 to 3) to range(INF to "", "" to INF),
range(4 to 5) to range("" to INF),
range(6 to INF) to range("" to INF)
).map {
it.first.map(First::compose) to it.second.map(Second::compose)
}