Files
kotlin-fork/compiler/testData/diagnostics/tests/controlFlowAnalysis/kt1189.kt
T

40 lines
764 B
Kotlin
Vendored

// FIR_IDENTICAL
//KT-1189 StackOverflow in ide
package kt1189
import java.util.concurrent.locks.ReentrantReadWriteLock
inline fun <T> ReentrantReadWriteLock.write(action: ()->T) : T {
val rl = readLock()
var readCount = 0
val writeCount = getWriteHoldCount()
if(writeCount == 0) {
readCount = getReadHoldCount()
if(readCount > 0)
for(i in 1..readCount)
rl.unlock()
}
val wl = writeLock()
wl.lock()
try {
return action()
}
finally {
if(readCount > 0) {
for(j in 1..readCount) {
rl.lock()
}
}
wl.unlock()
}
}
fun foo() {
try {
return
}
finally {
for (i in 1..10) {}
}
}