Files
kotlin-fork/compiler/testData/codegen/box/inlineClasses/secondaryConstructorsInsideInlineClassGeneric.kt
T
Evgeniy.Zhelenskiy 6107caa8e2 [FE1.0, FIR] Support secondary constructors for Value Classes
Signed-off-by: Evgeniy.Zhelenskiy <Evgeniy.Zhelenskiy@jetbrains.com>

#KT-1179
2022-11-30 18:55:35 +00:00

31 lines
821 B
Kotlin
Vendored

// WITH_STDLIB
// WORKS_WHEN_VALUE_CLASS
// LANGUAGE: +ValueClasses, +GenericInlineClassParameter, +ValueClassesSecondaryConstructorWithBody
var global = "wrong"
OPTIONAL_JVM_INLINE_ANNOTATION
value class Foo<T: String>(val x: T) {
constructor(y: Int) : this(y.toString() as T)
constructor(z: Long) : this(z.toInt() + 1)
constructor(other: Char) : this(other.toInt().toString() as T) {
global = "OK"
}
constructor(a: Int, b: Int) : this((a + b).toString() as T)
}
fun box(): String {
var f = Foo<String>(42)
if (f.x != "42") return "Fail 1: ${f.x}"
f = Foo<String>(43L)
if (f.x != "44") return "Fail 2: ${f.x}"
f = Foo<String>('a')
if (f.x != "97") return "Fail 3: ${f.x}"
f = Foo<String>(1, 2)
if (f.x != "3") return "Fail 4: ${f.x}"
return global
}