Minor adjustments to tests in preparation for generalizing the class inliner
Change-Id: I177ee6f725a647de3e12c40bbf76573cf49c1ea7
diff --git a/src/test/java/com/android/tools/r8/naming/FieldNamingObfuscationDictionaryTest.java b/src/test/java/com/android/tools/r8/naming/FieldNamingObfuscationDictionaryTest.java
index d028564..59b273a 100644
--- a/src/test/java/com/android/tools/r8/naming/FieldNamingObfuscationDictionaryTest.java
+++ b/src/test/java/com/android/tools/r8/naming/FieldNamingObfuscationDictionaryTest.java
@@ -7,6 +7,7 @@
import static junit.framework.TestCase.assertEquals;
import com.android.tools.r8.CompilationFailedException;
+import com.android.tools.r8.NeverClassInline;
import com.android.tools.r8.NeverInline;
import com.android.tools.r8.TestBase;
import com.android.tools.r8.TestParameters;
@@ -31,6 +32,7 @@
}
}
+ @NeverClassInline
public static class B extends A {
public int f0;
@@ -48,6 +50,7 @@
}
}
+ @NeverClassInline
public static class C extends A {
public int f0;
@@ -77,7 +80,7 @@
@Parameterized.Parameters(name = "{0}")
public static TestParametersCollection data() {
- return getTestParameters().withAllRuntimes().build();
+ return getTestParameters().withAllRuntimesAndApiLevels().build();
}
public FieldNamingObfuscationDictionaryTest(TestParameters parameters) {
@@ -94,7 +97,8 @@
.addInnerClasses(FieldNamingObfuscationDictionaryTest.class)
.addKeepRules("-overloadaggressively", "-obfuscationdictionary " + dictionary.toString())
.addKeepMainRule(Runner.class)
- .setMinApi(parameters.getRuntime())
+ .enableClassInliningAnnotations()
+ .setMinApi(parameters.getApiLevel())
.compile()
.run(parameters.getRuntime(), Runner.class, "HELLO", "WORLD")
.assertSuccessWithOutputLines("2HELLO WORLD", "2HELLO WORLD")
diff --git a/src/test/java/com/android/tools/r8/rewrite/enums/Names.java b/src/test/java/com/android/tools/r8/rewrite/enums/Names.java
index 8f09a80..2ecc9eb 100644
--- a/src/test/java/com/android/tools/r8/rewrite/enums/Names.java
+++ b/src/test/java/com/android/tools/r8/rewrite/enums/Names.java
@@ -77,10 +77,12 @@
return number.name();
}
+ @AssumeMayHaveSideEffects
@NeverInline
private static String nonStaticGet() {
return new Names().two.name();
}
+
private final Number two = Number.TWO;
public static void main(String[] args) {
diff --git a/src/test/java/com/android/tools/r8/rewrite/enums/ToStrings.java b/src/test/java/com/android/tools/r8/rewrite/enums/ToStrings.java
index 3617c8b..8055344 100644
--- a/src/test/java/com/android/tools/r8/rewrite/enums/ToStrings.java
+++ b/src/test/java/com/android/tools/r8/rewrite/enums/ToStrings.java
@@ -115,10 +115,12 @@
return number.toString();
}
+ @AssumeMayHaveSideEffects
@NeverInline
private static String nonStaticGet() {
return new ToStrings().two.toString();
}
+
private final NoToString two = NoToString.TWO;
public static void main(String[] args) {
diff --git a/src/test/java/com/android/tools/r8/shaking/keptgraph/KeptSingletonIsNotCyclicTest.java b/src/test/java/com/android/tools/r8/shaking/keptgraph/KeptSingletonIsNotCyclicTest.java
index ecfc895..62ec020 100644
--- a/src/test/java/com/android/tools/r8/shaking/keptgraph/KeptSingletonIsNotCyclicTest.java
+++ b/src/test/java/com/android/tools/r8/shaking/keptgraph/KeptSingletonIsNotCyclicTest.java
@@ -10,10 +10,14 @@
import static org.junit.Assert.assertEquals;
import com.android.tools.r8.NeverClassInline;
+import com.android.tools.r8.NeverInline;
+import com.android.tools.r8.NeverPropagateValue;
+import com.android.tools.r8.R8FullTestBuilder;
import com.android.tools.r8.TestBase;
import com.android.tools.r8.TestParameters;
import com.android.tools.r8.TestParametersBuilder;
import com.android.tools.r8.TestParametersCollection;
+import com.android.tools.r8.ThrowableConsumer;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.references.ClassReference;
import com.android.tools.r8.references.MethodReference;
@@ -47,15 +51,20 @@
@Test
public void testStaticMethod() throws Exception {
- test(FooStaticMethod.class, TestStaticMethod.class);
+ test(FooStaticMethod.class, TestStaticMethod.class, null);
}
@Test
public void testStaticField() throws Exception {
- test(FooStaticField.class, TestStaticField.class);
+ test(
+ FooStaticField.class,
+ TestStaticField.class,
+ builder -> builder.enableInliningAnnotations().enableMemberValuePropagationAnnotations());
}
- private void test(Class<?> fooClass, Class<?> testClass) throws Exception {
+ private void test(
+ Class<?> fooClass, Class<?> testClass, ThrowableConsumer<R8FullTestBuilder> configuration)
+ throws Exception {
WhyAreYouKeepingConsumer whyAreYouKeepingConsumer = new WhyAreYouKeepingConsumer(null);
GraphInspector inspector =
testForR8(parameters.getBackend())
@@ -63,6 +72,7 @@
.enableGraphInspector(whyAreYouKeepingConsumer)
.addProgramClasses(testClass, fooClass)
.addKeepMainRule(testClass)
+ .apply(configuration)
.run(parameters.getRuntime(), testClass)
.assertSuccessWithOutput(EXPECTED)
.graphInspector();
@@ -137,6 +147,10 @@
private FooStaticField() {}
+ // Ensure that toString() remains in TestStaticField.main(). Otherwise the expression
+ // `new TestStaticField().foo.toString()` can be optimized into "Foo!".
+ @NeverInline
+ @NeverPropagateValue
@Override
public String toString() {
return "Foo!";