Add property-setter test for companion tests
Change-Id: Ib0ce6a37d2213b0a2a3c9a69e67871dd650bc30a
diff --git a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInCompanionTest.java b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInCompanionTest.java
index 7514ff5..9d75aaa 100644
--- a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInCompanionTest.java
+++ b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInCompanionTest.java
@@ -36,7 +36,12 @@
public class MetadataRewriteInCompanionTest extends KotlinMetadataTestBase {
private static final String EXPECTED =
StringUtils.lines(
- "B.Companion::foo", "B.Companion::foo", "B.Companion::foo", "B.Companion::foo");
+ "B.Companion::foo",
+ "B.Companion::foo",
+ "B.Companion::foo",
+ "B.Companion::foo",
+ "B.Companion::bar",
+ "Hello World!");
private final TestParameters parameters;
@@ -125,8 +130,8 @@
// Property in companion with @JvmField is defined in the host class, without accessors.
.addKeepRules("-keepclassmembers class **.B { *** elt2; }")
.addKeepRules("-keep class **.I { <methods>; }")
- // Keep getters for B$Companion.(eltN|foo) which will be referenced at the app.
- .addKeepRules("-keepclassmembers class **.B$* { *** get*(...); }")
+ // Keep getters/setters for B$Companion.(eltN|foo) which will be referenced at the app.
+ .addKeepRules("-keepclassmembers class **.B$* { *** get*(...); *** set*(...); }")
// Keep the companion instance in the B class
.addKeepRules("-keepclassmembers class **.B { *** Companion; }")
// Keep the name of companion class
@@ -239,5 +244,9 @@
MethodSubject fooGetter = companion.uniqueMethodWithName("getFoo");
assertThat(fooGetter, isPresent());
assertThat(fooGetter, not(isRenamed()));
+
+ MethodSubject barSetter = companion.uniqueMethodWithName("setBar");
+ assertThat(barSetter, isPresent());
+ assertThat(barSetter, not(isRenamed()));
}
}
diff --git a/src/test/java/com/android/tools/r8/kotlin/metadata/companion_app/main.kt b/src/test/java/com/android/tools/r8/kotlin/metadata/companion_app/main.kt
index 403021e..ef4e23f 100644
--- a/src/test/java/com/android/tools/r8/kotlin/metadata/companion_app/main.kt
+++ b/src/test/java/com/android/tools/r8/kotlin/metadata/companion_app/main.kt
@@ -10,4 +10,7 @@
B.elt1.doStuff()
B.elt2.doStuff()
println(B.foo)
+ println(B.bar)
+ B.bar = "Hello World!";
+ println(B.bar)
}
diff --git a/src/test/java/com/android/tools/r8/kotlin/metadata/companion_lib/lib.kt b/src/test/java/com/android/tools/r8/kotlin/metadata/companion_lib/lib.kt
index 8e69219..54db448 100644
--- a/src/test/java/com/android/tools/r8/kotlin/metadata/companion_lib/lib.kt
+++ b/src/test/java/com/android/tools/r8/kotlin/metadata/companion_lib/lib.kt
@@ -24,5 +24,10 @@
val elt2: Super = B()
val foo: String
get() = "B.Companion::foo"
+ var bar : String = "B.Companion::bar"
+ get() = field
+ set(value) {
+ field = value
+ }
}
}