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"
}
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JS or not
// IGNORE_BACKEND: JS, NATIVE
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
object O {
val mmmap = HashMap<String, Int>();
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
object A {
val a = "OK"
val b = A.a
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
class A(val result: String)
fun a(body: A.() -> String): String {
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
interface T
object Foo {
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
class Test {
companion object {
fun ok() = "OK"
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
object Test {
fun ok() = "OK"
val x = run { Test.ok() }
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
class My {
var my: String = "U"
get() = { field }()
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JS or not
// IGNORE_BACKEND: JS, NATIVE
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JS or not
// IGNORE_BACKEND: JS, NATIVE
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JS or not
// IGNORE_BACKEND: JS, NATIVE
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JS or not
// IGNORE_BACKEND: JS, NATIVE
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JS or not
// IGNORE_BACKEND: JS, NATIVE
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JS or not
// IGNORE_BACKEND: JS, NATIVE
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JS or not
// IGNORE_BACKEND: JS, NATIVE
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JS or not
// IGNORE_BACKEND: JS, NATIVE
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JS or not
// IGNORE_BACKEND: JS, NATIVE
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
open class Bar<T>(val prop: String)
class Foo {
companion object : Bar<Foo>("OK") {
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
open class Bar<T>(val prop: String)
object Foo : Bar<Foo>("OK") {