FIR CFG: process called-in-place lambdas as loops

This commit is contained in:
pyos
2022-06-16 12:58:55 +02:00
committed by Dmitriy Novozhilov
parent 8214e4f806
commit 06c7572ee5
16 changed files with 116 additions and 31 deletions
@@ -0,0 +1,16 @@
// See also KT-7186 and forEachSafe.kt
// Custom `forEach` has no contract but the lambda is inline (not crossinline) so smart cast is safe
inline fun IntArray.forEachIndexed( op: (i: Int, value: Int) -> Unit) {
for (i in 0..this.size)
op(i, this[i])
}
fun max(a: IntArray): Int? {
var maxI: Int? = null
a.forEachIndexed { i, value ->
if (maxI == null || value >= a[maxI])
maxI = i
}
return maxI
}