blob: e32a632dd1498b26d38da8568525303254cd70b6 [file] [log] [blame]
// WITH_STDLIB
// WORKS_WHEN_VALUE_CLASS
// LANGUAGE: +ValueClasses
OPTIONAL_JVM_INLINE_ANNOTATION
value class SingleInitBlock(val s: String) {
init {
res = s
}
}
OPTIONAL_JVM_INLINE_ANNOTATION
value class MultipleInitBlocks(val a: Any?) {
init {
res = "O"
}
init {
res += "K"
}
}
OPTIONAL_JVM_INLINE_ANNOTATION
value class Lambda(val s: String) {
init {
val lambda = { res = s }
lambda()
}
}
OPTIONAL_JVM_INLINE_ANNOTATION
value class FunLiteral(val s: String) {
init {
val funLiteral = fun() {
res = s
}
funLiteral()
}
}
OPTIONAL_JVM_INLINE_ANNOTATION
value class ObjectLiteral(val s: String) {
init {
val objectLiteral = object {
fun run() {
res = s
}
}
objectLiteral.run()
}
}
OPTIONAL_JVM_INLINE_ANNOTATION
value class LocalFunction(val s: String) {
init {
fun local() {
res = s
}
local()
}
}
OPTIONAL_JVM_INLINE_ANNOTATION
value class LocalClass(val s: String) {
init {
class Local {
fun run() {
res = s
}
}
Local().run()
}
}
OPTIONAL_JVM_INLINE_ANNOTATION
value class Getter(val s: String) {
init {
res = ok
}
val ok: String
get() = s
}
OPTIONAL_JVM_INLINE_ANNOTATION
value class GetterThis(val s: String) {
init {
res = this.ok
}
val ok: String
get() = s
}
OPTIONAL_JVM_INLINE_ANNOTATION
value class Method(val s: String) {
init {
res = ok(this)
}
fun ok(m: Method): String = m.s
}
OPTIONAL_JVM_INLINE_ANNOTATION
value class MethodThis(val s: String) {
init {
res = this.ok(this)
}
fun ok(m: MethodThis): String = m.s
}
OPTIONAL_JVM_INLINE_ANNOTATION
value class InlineFun(val s: String) {
init {
res = ok()
}
inline fun ok(): String = s
}
OPTIONAL_JVM_INLINE_ANNOTATION
value class InlineFunThis(val s: String) {
init {
res = this.ok()
}
inline fun ok(): String = s
}
OPTIONAL_JVM_INLINE_ANNOTATION
value class InlineClass(val s: String) {
init {
SingleInitBlock(s)
}
}
var res: String = "FAIL"
fun box(): String {
SingleInitBlock("OK")
if (res != "OK") return "FAIL 1: $res"
res = "FAIL 2"
MultipleInitBlocks(null)
if (res != "OK") return "FAIL 21: $res"
res = "FAIL 3"
Lambda("OK")
if (res != "OK") return "FAIL 31: $res"
res = "FAIL 4"
FunLiteral("OK")
if (res != "OK") return "FAIL 41: $res"
res = "FAIL 5"
ObjectLiteral("OK")
if (res != "OK") return "FAIL 51: $res"
res = "FAIL 6"
LocalFunction("OK")
if (res != "OK") return "FAIL 61: $res"
res = "FAIL 7"
LocalClass("OK")
if (res != "OK") return "FAIL 71: $res"
res = "FAIL 8"
Getter("OK")
if (res != "OK") return "FAIL 81: $res"
res = "FAIL 9"
GetterThis("OK")
if (res != "OK") return "FAIL 91: $res"
res = "FAIL 10"
Method("OK")
if (res != "OK") return "FAIL 101: $res"
res = "FAIL 11"
MethodThis("OK")
if (res != "OK") return "FAIL 111: $res"
res = "FAIL 12"
InlineFun("OK")
if (res != "OK") return "FAIL 121: $res"
res = "FAIL 13"
InlineFunThis("OK")
if (res != "OK") return "FAIL 131: $res"
res = "FAIL 14"
InlineClass("OK")
if (res != "OK") return "FAIL 141: $res"
return "OK"
}