Move fields and init blocks of companions to their owners
This commit is contained in:
@@ -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
@@ -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
@@ -1,4 +1,3 @@
|
||||
// IGNORE_BACKEND: JVM_IR
|
||||
class A(val result: String)
|
||||
|
||||
fun a(body: A.() -> String): String {
|
||||
|
||||
-1
@@ -1,4 +1,3 @@
|
||||
// IGNORE_BACKEND: JVM_IR
|
||||
interface T
|
||||
|
||||
object Foo {
|
||||
|
||||
-1
@@ -1,4 +1,3 @@
|
||||
// IGNORE_BACKEND: JVM_IR
|
||||
class Test {
|
||||
companion object {
|
||||
fun ok() = "OK"
|
||||
|
||||
Vendored
-1
@@ -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
@@ -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
|
||||
|
||||
Vendored
-1
@@ -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
@@ -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") {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user