Move fields and init blocks of companions to their owners

This commit is contained in:
Georgy Bronnikov
2018-07-19 18:14:58 +03:00
parent 827494abbe
commit 605afbae90
42 changed files with 567 additions and 176 deletions
@@ -0,0 +1,36 @@
// TARGET_BACKEND: JVM
// WITH_RUNTIME
import kotlin.test.assertEquals
class WithCompanion {
companion object {
var a = 0
init {
a++
}
@JvmField var b = a
init {
b++
}
val c = b
}
}
object Object {
var a = 0
init {
a++
}
@JvmField var b = a
init {
b++
}
val c = b
}
fun box(): String {
assertEquals<Int>(2, WithCompanion.c, "Field WithCompanion.c")
assertEquals<Int>(2, Object.c, "Field Object")
return "OK"
}
@@ -1,5 +1,4 @@
// !LANGUAGE: +JvmFieldInInterface
// IGNORE_BACKEND: JVM_IR
// TARGET_BACKEND: JVM
// WITH_RUNTIME
@@ -0,0 +1,43 @@
// TARGET_BACKEND: JVM
// WITH_RUNTIME
// FILE: Test.java
public class Test {
public static String getField()
{
return new A().field;
}
public static String getCField()
{
return A.cfield;
}
public static String getObjectField()
{
return Object.field;
}
}
// FILE: publicFieldJava.kt
class A {
@JvmField public val field = "OK";
companion object {
@JvmField public val cfield = "OK";
}
}
object Object {
@JvmField public val field = "OK";
}
fun box(): String {
if (Test.getField() != "OK") return "fail 1: ${Test.getField()}"
if (Test.getCField() != "OK") return "fail 2: ${Test.getCField()}"
if (Test.getObjectField() != "OK") return "fail 3: ${Test.getObjectField()}"
return "OK"
}