Files
kotlin-fork/compiler/testData/diagnostics/tests/controlFlowAnalysis/kt1189.jet
T
2012-03-12 22:54:24 +04:00

39 lines
768 B
Plaintext

//KT-1189 StackOverflow in ide
package kt1189
import java.util.concurrent.locks.ReentrantReadWriteLock
inline fun <erased T> ReentrantReadWriteLock.write(action: ()->T) : T {
val rl = readLock().sure()
var readCount = 0
val writeCount = getWriteHoldCount()
if(writeCount == 0) {
readCount = getReadHoldCount()
if(readCount > 0)
for(i in 1..readCount)
rl.unlock()
}
val wl = writeLock().sure()
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) {}
}
}