Files
kotlin-fork/idea/jvm-debugger/jvm-debugger-test/testData/evaluation/singleBreakpoint/fieldGetters.kt
T
Yan Zhulanow 472ec72eb9 Refactor debugger tests
1. Move tests to their own module
2. Avoid sharing the 'tinyApp' project between tests
3. Clean up option directive handling
2019-10-08 19:13:56 +09:00

182 lines
4.0 KiB
Kotlin
Vendored

// FILE: fieldGetters.kt
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;
// FILE: forTests/FieldsGetters.java
package forTests;
public class FieldsGetters {
public static class PublicField {
public String foo = "a";
}
public static class PackagePrivateField {
String foo = "b";
}
public static class ProtectedField {
protected String foo = "c";
}
public static class PrivateField {
private String foo = "d";
}
public static class PublicFieldGetter {
public final String foo = "a";
public String getFoo() {
return "b";
}
}
public static class PrivateFieldPublicGetter {
private final String foo = "c";
public String getFoo() {
return "d";
}
}
public static class PrivateFieldPrivateGetter {
private final String foo = "e";
public String getFoo() {
return "f";
}
}
public static class PublicGetter1 extends PublicField {
public String getFoo() {
return "g";
}
}
public static class PublicGetter2 extends PackagePrivateField {
public String getFoo() {
return "h";
}
}
public static class PrivateGetter1 extends PrivateField {
private String getFoo() {
return "g";
}
}
public static class PublicGetterOnly {
public String getFoo() {
return "a";
}
}
public static class PublicFieldAndGetterInParent extends PublicGetterOnly {
public String foo = "b";
}
public abstract class AbstractGetter {
public String foo = "c";
public abstract String getFoo();
}
}