quasar
quasar copied to clipboard
Instrumentation issue when Kotlin inline functionals are AoT-instrumented and the code using them is not
Example code for reproducing the issue by @Jire
package org.abendigo
import co.paralleluniverse.fibers.Fiber
import co.paralleluniverse.fibers.Suspendable
import co.paralleluniverse.kotlin.fiber
import co.paralleluniverse.strands.Strand
import java.util.*
import java.util.concurrent.TimeUnit
@Suspendable fun sleep(duration: Long, timeUnit: TimeUnit = TimeUnit.MILLISECONDS) = Strand.sleep(duration, timeUnit)
inline fun <T> every(duration: Int, timeUnit: TimeUnit = TimeUnit.MILLISECONDS, crossinline action: () -> T):
Fiber<Unit> = every(duration.toLong(), timeUnit, action)
inline fun <T> every(duration: Long, timeUnit: TimeUnit = TimeUnit.MILLISECONDS, crossinline action: () -> T) =
fiber @Suspendable {
println("\nEvery - start\n")
action()
while (true) {
println("Every - sleeping")
sleep(duration, timeUnit)
println("Every - action")
action()
}
}
public fun main(args: Array<String>) {
every(1000) { println("test ${Date().time}") }
Thread.sleep(Long.MAX_VALUE)
}