Evaluate: Use '<name>_field' syntax for field value evaluation (KT-14075)

This commit is contained in:
Yan Zhulanow
2018-11-13 16:09:45 +09:00
parent c2f33c0dfd
commit ada71ce3cd
16 changed files with 523 additions and 9 deletions
@@ -0,0 +1,105 @@
package fieldGetters
import forTests.FieldsGetters
import forTests.FieldsGetters.*
fun main(args: Array<String>) {
//Breakpoint!
val a = 5
}
class K1 {
val a: Int = 0
get() = field + 1
}
class K2 {
@JvmField
val a: Int = 0
}
// EXPRESSION: K1().a
// RESULT: 1: I
// EXPRESSION: K1().a_field
// RESULT: 0: I
// EXPRESSION: K2().a
// RESULT: 0: I
// EXPRESSION: K2().a_field
// RESULT: 0: I
// EXPRESSION: PublicField().foo
// RESULT: "a": Ljava/lang/String;
// EXPRESSION: PublicField().foo_field
// RESULT: Unresolved reference: foo_field
// EXPRESSION: PackagePrivateField().foo
// RESULT: "b": Ljava/lang/String;
// EXPRESSION: PackagePrivateField().foo_field
// RESULT: Unresolved reference: foo_field
// EXPRESSION: ProtectedField().foo
// RESULT: "c": Ljava/lang/String;
// EXPRESSION: ProtectedField().foo_field
// RESULT: Unresolved reference: foo_field
// EXPRESSION: PrivateField().foo
// RESULT: "d": Ljava/lang/String;
// EXPRESSION: PrivateField().foo_field
// RESULT: Unresolved reference: foo_field
// EXPRESSION: PublicFieldGetter().foo
// RESULT: "b": Ljava/lang/String;
// EXPRESSION: PublicFieldGetter().foo_field
// RESULT: "a": Ljava/lang/String;
// EXPRESSION: PrivateFieldPublicGetter().foo
// RESULT: "d": Ljava/lang/String;
// EXPRESSION: PrivateFieldPublicGetter().foo_field
// RESULT: "c": Ljava/lang/String;
// EXPRESSION: PrivateFieldPrivateGetter().foo
// RESULT: "f": Ljava/lang/String;
// EXPRESSION: PrivateFieldPrivateGetter().foo_field
// RESULT: "e": Ljava/lang/String;
// EXPRESSION: PublicGetter1().foo
// RESULT: "g": Ljava/lang/String;
// EXPRESSION: PublicGetter1().foo_field
// RESULT: "a": Ljava/lang/String;
// EXPRESSION: PublicGetter2().foo
// RESULT: "h": Ljava/lang/String;
// EXPRESSION: PublicGetter2().foo_field
// RESULT: "b": Ljava/lang/String;
// EXPRESSION: PrivateGetter1().foo
// RESULT: "d": Ljava/lang/String;
// EXPRESSION: PrivateGetter1().foo_field
// RESULT: Unresolved reference: foo_field
// EXPRESSION: PublicGetterOnly().foo
// RESULT: "a": Ljava/lang/String;
// EXPRESSION: PublicGetterOnly().foo_field
// RESULT: Unresolved reference: foo_field
// EXPRESSION: PublicFieldAndGetterInParent().foo
// RESULT: "a": Ljava/lang/String;
// EXPRESSION: PublicFieldAndGetterInParent().foo_field
// RESULT: "b": Ljava/lang/String;
@@ -0,0 +1,29 @@
LineBreakpoint created at fieldGetters.kt:8
Run Java
Connected to the target VM
fieldGetters.kt:8
Compile bytecode for K1().a
Compile bytecode for K1().a_field
Compile bytecode for K2().a
Compile bytecode for K2().a_field
Compile bytecode for PublicField().foo
Compile bytecode for PackagePrivateField().foo
Compile bytecode for ProtectedField().foo
Compile bytecode for PrivateField().foo
Compile bytecode for PublicFieldGetter().foo
Compile bytecode for PublicFieldGetter().foo_field
Compile bytecode for PrivateFieldPublicGetter().foo
Compile bytecode for PrivateFieldPublicGetter().foo_field
Compile bytecode for PrivateFieldPrivateGetter().foo
Compile bytecode for PrivateFieldPrivateGetter().foo_field
Compile bytecode for PublicGetter1().foo
Compile bytecode for PublicGetter1().foo_field
Compile bytecode for PublicGetter2().foo
Compile bytecode for PublicGetter2().foo_field
Compile bytecode for PrivateGetter1().foo
Compile bytecode for PublicGetterOnly().foo
Compile bytecode for PublicFieldAndGetterInParent().foo
Compile bytecode for PublicFieldAndGetterInParent().foo_field
Disconnected from the target VM
Process finished with exit code 0