Make top-level property backing field private in bytecode

This commit is contained in:
Michael Bogdanov
2015-10-19 14:20:05 +03:00
parent 376c188cf7
commit c8c3e88c82
17 changed files with 112 additions and 41 deletions
@@ -1,14 +1,14 @@
public final class FileFacadeKt {
@org.jetbrains.annotations.Nullable
static final java.lang.String nullableVal = "";
private static final java.lang.String nullableVal = "";
@org.jetbrains.annotations.Nullable
static java.lang.String nullableVar;
private static java.lang.String nullableVar;
@org.jetbrains.annotations.NotNull
static final java.lang.String notNullVal = "";
private static final java.lang.String notNullVal = "";
@org.jetbrains.annotations.NotNull
static java.lang.String notNullVar;
static final java.lang.String privateNn = "";
static final java.lang.String privateN = "";
private static java.lang.String notNullVar;
private static final java.lang.String privateNn = "";
private static final java.lang.String privateN = "";
@org.jetbrains.annotations.NotNull
public static final java.lang.String notNull(@org.jetbrains.annotations.NotNull java.lang.String a) { /* compiled code */ }
@@ -0,0 +1,18 @@
// FULL_JDK
package test
import java.lang.reflect.Modifier
import kotlin.test.assertTrue
private val prop = "O"
private fun test() = "K"
fun box(): String {
val clazz = Class.forName("test.PrivateVisibilityKt")
assertTrue(Modifier.isPrivate(clazz.getDeclaredMethod("test").modifiers), "Private top level function should be private")
assertTrue(Modifier.isPrivate(clazz.getDeclaredField("prop").modifiers), "Backing field for private top level property should be private")
return "OK"
}
@@ -23,7 +23,7 @@
@kotlin.annotation.Target @java.lang.annotation.Retention @java.lang.annotation.Target @kotlin.jvm.internal.KotlinClass Anno
@kotlin.jvm.internal.KotlinFileFacade DefaultTargetsKt {
final @Anno field p2: int
private final @Anno field p2: int
method <clinit>(): void
public final method getP(): int
public final method getP2(): int
@@ -3,4 +3,4 @@
// TESTED_OBJECT_KIND: property
// TESTED_OBJECTS: TopLevelPropertyKt, test
// IS_FULL_CONTAINING_CLASS_NAME: false
// FLAGS: ACC_DEPRECATED, ACC_FINAL, ACC_STATIC
// FLAGS: ACC_DEPRECATED, ACC_FINAL, ACC_STATIC, ACC_PRIVATE