FIR: save/restore tower data contexts during resolve jumps

#KT-50278 Fixed
This commit is contained in:
Mikhail Glukhikh
2021-12-20 17:28:04 +03:00
committed by Space
parent f3f63a458b
commit 1938438fa1
6 changed files with 67 additions and 0 deletions
@@ -0,0 +1,24 @@
FILE: resolveToLocalFromCallSite.kt
public final val x: R|kotlin/Any| = object : R|kotlin/Any| {
private constructor(): R|<anonymous>| {
super<R|kotlin/Any|>()
}
public final fun foo(types: R|kotlin/collections/List<kotlin/String>|): R|kotlin/Unit| {
lval length: R|kotlin/String| = String(123)
R|<local>/types|.R|kotlin/collections/mapIndexed|<R|kotlin/String|, R|kotlin/Triple<@R|kotlin/ParameterName|(name = String(index)) kotlin/Int, kotlin/String, kotlin/Int>|>(<L> = mapIndexed@fun <anonymous>(i: R|@R|kotlin/ParameterName|(name = String(index)) kotlin/Int|, length: R|kotlin/String|): R|kotlin/Triple<@R|kotlin/ParameterName|(name = String(index)) kotlin/Int, kotlin/String, kotlin/Int>| <inline=Inline, kind=UNKNOWN> {
^ R|kotlin/Triple.Triple|<R|@R|kotlin/ParameterName|(name = String(index)) kotlin/Int|, R|kotlin/String|, R|kotlin/Int|>(R|<local>/i|, R|<local>/length|, (this@R|/<anonymous>|, R|<local>/length|).R|/<anonymous>.getFilteredType|())
}
)
}
private final fun R|kotlin/String|.getFilteredType(): R|kotlin/Int| {
^getFilteredType R|/bar|(this@R|/<anonymous>.getFilteredType|.R|kotlin/String.length|)
}
}
public get(): R|kotlin/Any|
public final fun bar(x: R|kotlin/Int|): R|kotlin/Int| {
^bar R|<local>/x|
}
@@ -0,0 +1,10 @@
val x = object {
fun foo(types: List<String>) {
val length = "123"
types.mapIndexed { i, length -> Triple(i, length, length.getFilteredType()) }
}
private fun String.getFilteredType() = bar(length)
}
fun bar(x: Int) = x