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!";