// TARGET_BACKEND: JVM
// WITH_STDLIB

// MODULE: lib
// FILE: A.kt

package constants

public const val b: Byte = 100
public const val s: Short = 20000
public const val i: Int = 2000000
public const val l: Long = 2000000000000L
public const val f: Float = 3.14f
public const val d: Double = 3.14
public const val bb: Boolean = true
public const val c: Char = '\u03c0' // pi symbol

public const val str: String = ":)"

@Retention(AnnotationRetention.RUNTIME)
public annotation class AnnotationClass(public val value: String)

// MODULE: main(lib)
// FILE: B.kt

import constants.*

@AnnotationClass("$b $s $i $l $f $d $bb $c $str")
class DummyClass()

fun box(): String {
    val klass = DummyClass::class.java
    val annotationClass = AnnotationClass::class.java
    val annotation = klass.getAnnotation(annotationClass)!!
    val value = annotation.value
    require(value == "100 20000 2000000 2000000000000 3.14 3.14 true \u03c0 :)", { "Annotation value: $value" })
    return "OK"
}
