quasar icon indicating copy to clipboard operation
quasar copied to clipboard

Instrumentation issue when Kotlin inline functionals are AoT-instrumented and the code using them is not

Open circlespainter opened this issue 10 years ago • 0 comments

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)
}

circlespainter avatar Aug 14 '15 12:08 circlespainter