Files
kotlin-fork/compiler/testData/codegen/box/fieldRename/jvmFieldNoClash2.kt
T
Alexander Udalov e22594acde JVM IR: slightly change field renaming convention implementation
Prefer to rename fields from the class, not from the companion, to be
more in line with the old backend's behavior. This has no effect on the
behavior of current tests but removes differences in metadata (since
metadata has information about every property->field mapping) in some of
them
2019-04-30 13:15:29 +02:00

33 lines
741 B
Kotlin
Vendored

// TARGET_BACKEND: JVM
// WITH_RUNTIME
// FULL_JDK
import java.lang.reflect.Modifier
class A {
val x = "outer"
val y = "outer"
companion object {
@JvmField
val x = "companion"
const val y = "companion"
}
}
fun box(): String {
if (A().x != "outer") return "Fail outer x"
if (A().y != "outer") return "Fail outer y"
if (A.x != "companion") return "Fail companion x"
if (A.y != "companion") return "Fail companion y"
if (!Modifier.isStatic(A::class.java.getDeclaredField("x").modifiers))
return "Fail: A.x should be static"
if (Modifier.isStatic(A::class.java.getDeclaredField("x$1").modifiers))
return "Fail: A.x$1 should not be static"
return "OK"
}