20c4a7b244
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
29 lines
710 B
Kotlin
Vendored
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"
|
|
}
|