Files
kotlin-fork/compiler/testData/codegen/box/functions/localFunctions/kt4989.kt
T
Mikhail Glukhikh 20c4a7b244 [FIR2IR] Introduce staged transformation (first step)
Now FE IR -> BE IR transformation is performed in multiple stages
controller by Fir2IrConverter. Stages are
 * files & classes registration
 * supertypes & type parameters handling
 * functions & properties signature generation
 * body generation

After each step we have guarantee (with exception of local classes &
type inference combination, and external symbols) that required symbols
(class/function/property/variable/type parameter)
are already bound to real declarations and have correct parents.

This commit also fixes incorrect parents for local classes
2020-03-13 12:18:02 +03:00

29 lines
710 B
Kotlin
Vendored

class It(val id: String)
fun box(): String {
val projectId = "projectId"
val it = It("it")
fun selectMetaRunnerId(): String {
operator fun Int?.inc() = (this ?: 0) + 1
var counter: Int? = null
fun path(metaRunnerId: String) = counter != 2
var i = 0
while (true) {
val name = projectId + "_" + it.id + (if (counter == null) "" else "_$counter")
if (!path(name)) {
return name
}
counter++
i++
if (i > 2) return "Infinity loop: $counter"
}
}
val X = selectMetaRunnerId()
if (X != projectId + "_" + it.id + "_2") return "fail: $X"
return "OK"
}