Add testing annotations as program input to tests
This will be needed to avoid missing classes warnings with the new missing class reporting.
Change-Id: Ia6940acc198e908abdb43197014e6db8e3f602eb
diff --git a/src/test/java/com/android/tools/r8/NeverInline.java b/src/test/java/com/android/tools/r8/NeverInline.java
index ca0c2a4..cfbb09f 100644
--- a/src/test/java/com/android/tools/r8/NeverInline.java
+++ b/src/test/java/com/android/tools/r8/NeverInline.java
@@ -4,7 +4,10 @@
package com.android.tools.r8;
import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
+@Retention(RetentionPolicy.CLASS)
@Target({ElementType.CONSTRUCTOR, ElementType.METHOD})
public @interface NeverInline {}
diff --git a/src/test/java/com/android/tools/r8/R8TestBuilder.java b/src/test/java/com/android/tools/r8/R8TestBuilder.java
index 34d573a..c45de1f 100644
--- a/src/test/java/com/android/tools/r8/R8TestBuilder.java
+++ b/src/test/java/com/android/tools/r8/R8TestBuilder.java
@@ -57,21 +57,6 @@
private AllowedDiagnosticMessages allowedDiagnosticMessages = AllowedDiagnosticMessages.NONE;
private boolean allowUnusedProguardConfigurationRules = false;
- private boolean enableAssumeNoSideEffectsAnnotations = false;
- private boolean enableConstantArgumentAnnotations = false;
- private boolean enableInliningAnnotations = false;
- private boolean enableMemberValuePropagationAnnotations = false;
- private boolean enableNoUnusedInterfaceRemovalAnnotations = false;
- private boolean enableNoVerticalClassMergingAnnotations = false;
- private boolean enableNoHorizontalClassMergingAnnotations = false;
- private boolean enableNoStaticClassMergingAnnotations = false;
- private boolean enableNeverClassInliningAnnotations = false;
- private boolean enableNeverReprocessClassInitializerAnnotations = false;
- private boolean enableNeverReprocessMethodAnnotations = false;
- private boolean enableReprocessClassInitializerAnnotations = false;
- private boolean enableReprocessMethodAnnotations = false;
- private boolean enableSideEffectAnnotations = false;
- private boolean enableUnusedArgumentAnnotations = false;
private CollectingGraphConsumer graphConsumer = null;
private List<String> keepRules = new ArrayList<>();
private List<Path> mainDexRulesFiles = new ArrayList<>();
@@ -82,22 +67,6 @@
R8TestCompileResult internalCompile(
Builder builder, Consumer<InternalOptions> optionsConsumer, Supplier<AndroidApp> app)
throws CompilationFailedException {
- if (enableConstantArgumentAnnotations
- || enableInliningAnnotations
- || enableMemberValuePropagationAnnotations
- || enableNoUnusedInterfaceRemovalAnnotations
- || enableNoVerticalClassMergingAnnotations
- || enableNoHorizontalClassMergingAnnotations
- || enableNoStaticClassMergingAnnotations
- || enableNeverClassInliningAnnotations
- || enableNeverReprocessClassInitializerAnnotations
- || enableNeverReprocessMethodAnnotations
- || enableReprocessClassInitializerAnnotations
- || enableReprocessMethodAnnotations
- || enableSideEffectAnnotations
- || enableUnusedArgumentAnnotations) {
- ToolHelper.allowTestProguardOptions(builder);
- }
if (!keepRules.isEmpty()) {
builder.addProguardConfiguration(keepRules, Origin.unknown());
}
@@ -357,75 +326,54 @@
}
public T enableAlwaysInliningAnnotations() {
- return enableAlwaysInliningAnnotations(AlwaysInline.class.getPackage().getName());
+ return addAlwaysInliningAnnotations()
+ .enableAlwaysInliningAnnotations(AlwaysInline.class.getPackage().getName());
}
public T enableAlwaysInliningAnnotations(String annotationPackageName) {
- if (!enableInliningAnnotations) {
- enableInliningAnnotations = true;
- addInternalKeepRules(
- "-alwaysinline class * { @" + annotationPackageName + ".AlwaysInline *; }");
- }
- return self();
+ return addInternalKeepRules(
+ "-alwaysinline class * { @" + annotationPackageName + ".AlwaysInline *; }");
}
public T enableAssumeNoSideEffectsAnnotations() {
- return enableAssumeNoSideEffectsAnnotations(AssumeNoSideEffects.class.getPackage().getName());
+ return addAssumeNoSideEffectsAnnotations()
+ .enableAssumeNoSideEffectsAnnotations(AssumeNoSideEffects.class.getPackage().getName());
}
public T enableAssumeNoSideEffectsAnnotations(String annotationPackageName) {
- if (!enableAssumeNoSideEffectsAnnotations) {
- enableAssumeNoSideEffectsAnnotations = true;
- addInternalKeepRules(
- "-assumenosideeffects class * { @"
- + annotationPackageName
- + ".AssumeNoSideEffects <methods>; }");
- }
- return self();
+ return addInternalKeepRules(
+ "-assumenosideeffects class * { @"
+ + annotationPackageName
+ + ".AssumeNoSideEffects <methods>; }");
}
public T enableInliningAnnotations() {
- return enableInliningAnnotations(NeverInline.class.getPackage().getName());
+ return addInliningAnnotations()
+ .enableInliningAnnotations(NeverInline.class.getPackage().getName());
}
public T enableInliningAnnotations(String annotationPackageName) {
- if (!enableInliningAnnotations) {
- enableInliningAnnotations = true;
- addInternalKeepRules(
- "-neverinline class * { @" + annotationPackageName + ".NeverInline *; }");
- }
- return self();
+ return addInternalKeepRules(
+ "-neverinline class * { @" + annotationPackageName + ".NeverInline *; }");
}
public T enableForceInliningAnnotations() {
- return enableForceInliningAnnotations(ForceInline.class.getPackage().getName());
+ return addForceInliningAnnotations()
+ .enableForceInliningAnnotations(ForceInline.class.getPackage().getName());
}
public T enableForceInliningAnnotations(String annotationPackageName) {
- if (!enableInliningAnnotations) {
- enableInliningAnnotations = true;
- addInternalKeepRules(
- "-forceinline class * { @" + annotationPackageName + ".ForceInline *; }");
- }
- return self();
+ return addInternalKeepRules(
+ "-forceinline class * { @" + annotationPackageName + ".ForceInline *; }");
}
public T enableNeverClassInliningAnnotations() {
- if (!enableNeverClassInliningAnnotations) {
- enableNeverClassInliningAnnotations = true;
- addInternalKeepRules("-neverclassinline @com.android.tools.r8.NeverClassInline class *");
- }
- return self();
+ return addNeverClassInliningAnnotations()
+ .addInternalKeepRules("-neverclassinline @com.android.tools.r8.NeverClassInline class *");
}
- private void addInternalMatchInterfaceRule(String name, Class matchInterface) {
- StringBuilder sb = new StringBuilder();
- sb.append("-");
- sb.append(name);
- sb.append(" @");
- sb.append(matchInterface.getTypeName());
- sb.append(" class *");
- addInternalKeepRules(sb.toString());
+ T addInternalMatchInterfaceRule(String name, Class<?> matchInterface) {
+ return addInternalKeepRules("-" + name + " @" + matchInterface.getTypeName() + " class *");
}
public T noClassInlining() {
@@ -467,42 +415,31 @@
}
public T enableNoUnusedInterfaceRemovalAnnotations() {
- if (!enableNoUnusedInterfaceRemovalAnnotations) {
- enableNoUnusedInterfaceRemovalAnnotations = true;
- addInternalMatchInterfaceRule(
- NoUnusedInterfaceRemovalRule.RULE_NAME, NoUnusedInterfaceRemoval.class);
- }
- return self();
+ return addNoUnusedInterfaceRemovalAnnotations()
+ .addInternalMatchInterfaceRule(
+ NoUnusedInterfaceRemovalRule.RULE_NAME, NoUnusedInterfaceRemoval.class);
}
public T enableNoVerticalClassMergingAnnotations() {
- if (!enableNoVerticalClassMergingAnnotations) {
- enableNoVerticalClassMergingAnnotations = true;
- addInternalMatchInterfaceRule(
- NoVerticalClassMergingRule.RULE_NAME, NoVerticalClassMerging.class);
- }
- return self();
- }
-
- public T addNoHorizontalClassMergingRule(String clazz) {
- return addKeepRules("-nohorizontalclassmerging class " + clazz);
+ return addNoVerticalClassMergingAnnotations()
+ .addInternalMatchInterfaceRule(
+ NoVerticalClassMergingRule.RULE_NAME, NoVerticalClassMerging.class);
}
public T enableNoHorizontalClassMergingAnnotations() {
- if (!enableNoHorizontalClassMergingAnnotations) {
- enableNoHorizontalClassMergingAnnotations = true;
- addInternalMatchInterfaceRule(
- NoHorizontalClassMergingRule.RULE_NAME, NoHorizontalClassMerging.class);
- }
- return self();
+ return addProgramClasses(NoHorizontalClassMerging.class)
+ .addInternalMatchInterfaceRule(
+ NoHorizontalClassMergingRule.RULE_NAME, NoHorizontalClassMerging.class);
+ }
+
+ public T addNoHorizontalClassMergingRule(String clazz) {
+ return addInternalKeepRules("-nohorizontalclassmerging class " + clazz);
}
public T enableNoStaticClassMergingAnnotations() {
- if (!enableNoStaticClassMergingAnnotations) {
- enableNoStaticClassMergingAnnotations = true;
- addInternalMatchInterfaceRule(NoStaticClassMergingRule.RULE_NAME, NoStaticClassMerging.class);
- }
- return self();
+ return addNoStaticClassMergingAnnotations()
+ .addInternalMatchInterfaceRule(
+ NoStaticClassMergingRule.RULE_NAME, NoStaticClassMerging.class);
}
public T enableMemberValuePropagationAnnotations() {
@@ -511,54 +448,40 @@
public T enableMemberValuePropagationAnnotations(boolean enable) {
if (enable) {
- if (!enableMemberValuePropagationAnnotations) {
- enableMemberValuePropagationAnnotations = true;
- addInternalKeepRules(
- "-neverpropagatevalue class * { @com.android.tools.r8.NeverPropagateValue *; }");
- }
- } else {
- assert !enableMemberValuePropagationAnnotations;
+ return addMemberValuePropagationAnnotations()
+ .addInternalKeepRules(
+ "-neverpropagatevalue class * { @com.android.tools.r8.NeverPropagateValue *; }");
}
return self();
}
public T enableReprocessClassInitializerAnnotations() {
- if (!enableReprocessClassInitializerAnnotations) {
- enableReprocessClassInitializerAnnotations = true;
- addInternalKeepRules(
- "-reprocessclassinitializer @com.android.tools.r8.ReprocessClassInitializer class *");
- }
- return self();
+ return addReprocessClassInitializerAnnotations()
+ .addInternalKeepRules(
+ "-reprocessclassinitializer @com.android.tools.r8.ReprocessClassInitializer class *");
}
public T enableNeverReprocessClassInitializerAnnotations() {
- if (!enableNeverReprocessClassInitializerAnnotations) {
- enableNeverReprocessClassInitializerAnnotations = true;
- addInternalKeepRules(
- "-neverreprocessclassinitializer @com.android.tools.r8.NeverReprocessClassInitializer"
- + " class *");
- }
- return self();
+ return addNeverReprocessClassInitializerAnnotations()
+ .addInternalKeepRules(
+ "-neverreprocessclassinitializer @com.android.tools.r8.NeverReprocessClassInitializer"
+ + " class *");
}
public T enableReprocessMethodAnnotations() {
- if (!enableReprocessMethodAnnotations) {
- enableReprocessMethodAnnotations = true;
- addInternalKeepRules(
- "-reprocessmethod class * {", " @com.android.tools.r8.ReprocessMethod <methods>;", "}");
- }
- return self();
+ return addReprocessMethodAnnotations()
+ .addInternalKeepRules(
+ "-reprocessmethod class * {",
+ " @com.android.tools.r8.ReprocessMethod <methods>;",
+ "}");
}
public T enableNeverReprocessMethodAnnotations() {
- if (!enableNeverReprocessMethodAnnotations) {
- enableNeverReprocessMethodAnnotations = true;
- addInternalKeepRules(
- "-neverreprocessmethod class * {",
- " @com.android.tools.r8.NeverReprocessMethod <methods>;",
- "}");
- }
- return self();
+ return addNeverReprocessMethodAnnotations()
+ .addInternalKeepRules(
+ "-neverreprocessmethod class * {",
+ " @com.android.tools.r8.NeverReprocessMethod <methods>;",
+ "}");
}
public T enableProtoShrinking() {
@@ -574,22 +497,16 @@
}
public T enableSideEffectAnnotations() {
- if (!enableSideEffectAnnotations) {
- enableSideEffectAnnotations = true;
- addInternalKeepRules(
- "-assumemayhavesideeffects class * {",
- " @com.android.tools.r8.AssumeMayHaveSideEffects <methods>;",
- "}");
- }
- return self();
+ return addSideEffectAnnotations()
+ .addInternalKeepRules(
+ "-assumemayhavesideeffects class * {",
+ " @com.android.tools.r8.AssumeMayHaveSideEffects <methods>;",
+ "}");
}
public T assumeAllMethodsMayHaveSideEffects() {
- if (!enableSideEffectAnnotations) {
- enableSideEffectAnnotations = true;
- addInternalKeepRules("-assumemayhavesideeffects class * { <methods>; }");
- }
- return self();
+ return addSideEffectAnnotations()
+ .addInternalKeepRules("-assumemayhavesideeffects class * { <methods>; }");
}
public T enableConstantArgumentAnnotations() {
@@ -598,13 +515,9 @@
public T enableConstantArgumentAnnotations(boolean value) {
if (value) {
- if (!enableConstantArgumentAnnotations) {
- enableConstantArgumentAnnotations = true;
- addInternalKeepRules(
- "-keepconstantarguments class * { @com.android.tools.r8.KeepConstantArguments *; }");
- }
- } else {
- assert !enableConstantArgumentAnnotations;
+ return addConstantArgumentAnnotations()
+ .addInternalKeepRules(
+ "-keepconstantarguments class * { @com.android.tools.r8.KeepConstantArguments *; }");
}
return self();
}
@@ -615,13 +528,9 @@
public T enableUnusedArgumentAnnotations(boolean value) {
if (value) {
- if (!enableUnusedArgumentAnnotations) {
- enableUnusedArgumentAnnotations = true;
- addInternalKeepRules(
- "-keepunusedarguments class * { @com.android.tools.r8.KeepUnusedArguments *; }");
- }
- } else {
- assert !enableUnusedArgumentAnnotations;
+ return addUnusedArgumentAnnotations()
+ .addInternalKeepRules(
+ "-keepunusedarguments class * { @com.android.tools.r8.KeepUnusedArguments *; }");
}
return self();
}
@@ -659,9 +568,10 @@
return self();
}
- private void addInternalKeepRules(String... rules) {
+ T addInternalKeepRules(String... rules) {
// We don't add these to the keep-rule set for other test provided rules.
builder.addProguardConfiguration(Arrays.asList(rules), Origin.unknown());
+ return enableProguardTestOptions();
}
@Override
diff --git a/src/test/java/com/android/tools/r8/TestShrinkerBuilder.java b/src/test/java/com/android/tools/r8/TestShrinkerBuilder.java
index 6f6c949..37673c2 100644
--- a/src/test/java/com/android/tools/r8/TestShrinkerBuilder.java
+++ b/src/test/java/com/android/tools/r8/TestShrinkerBuilder.java
@@ -12,11 +12,14 @@
import com.android.tools.r8.utils.AndroidApiLevel;
import com.android.tools.r8.utils.FileUtils;
import com.android.tools.r8.utils.StringUtils;
+import com.google.common.collect.Sets;
import java.io.IOException;
+import java.lang.annotation.Annotation;
import java.nio.file.Path;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
+import java.util.Set;
public abstract class TestShrinkerBuilder<
C extends BaseCompilerCommand,
@@ -30,6 +33,9 @@
protected boolean enableOptimization = true;
protected boolean enableMinification = true;
+ private final Set<Class<? extends Annotation>> addedTestingAnnotations =
+ Sets.newIdentityHashSet();
+
TestShrinkerBuilder(TestState state, B builder, Backend backend) {
super(state, builder, backend);
}
@@ -301,6 +307,78 @@
public abstract T addApplyMapping(String proguardMap);
+ public final T addAlwaysInliningAnnotations() {
+ return addTestingAnnotation(AlwaysInline.class);
+ }
+
+ public final T addAssumeNoSideEffectsAnnotations() {
+ return addTestingAnnotation(AssumeNoSideEffects.class);
+ }
+
+ public final T addConstantArgumentAnnotations() {
+ return addTestingAnnotation(KeepConstantArguments.class);
+ }
+
+ public final T addForceInliningAnnotations() {
+ return addTestingAnnotation(ForceInline.class);
+ }
+
+ public final T addInliningAnnotations() {
+ return addTestingAnnotation(NeverInline.class);
+ }
+
+ public final T addMemberValuePropagationAnnotations() {
+ return addTestingAnnotation(NeverPropagateValue.class);
+ }
+
+ public final T addNeverClassInliningAnnotations() {
+ return addTestingAnnotation(NeverClassInline.class);
+ }
+
+ public final T addNeverReprocessClassInitializerAnnotations() {
+ return addTestingAnnotation(NeverReprocessClassInitializer.class);
+ }
+
+ public final T addNeverReprocessMethodAnnotations() {
+ return addTestingAnnotation(NeverReprocessMethod.class);
+ }
+
+ public final T addNoHorizontalClassMergingAnnotations() {
+ return addTestingAnnotation(NoHorizontalClassMerging.class);
+ }
+
+ public final T addNoStaticClassMergingAnnotations() {
+ return addTestingAnnotation(NoStaticClassMerging.class);
+ }
+
+ public final T addNoUnusedInterfaceRemovalAnnotations() {
+ return addTestingAnnotation(NoUnusedInterfaceRemoval.class);
+ }
+
+ public final T addNoVerticalClassMergingAnnotations() {
+ return addTestingAnnotation(NoVerticalClassMerging.class);
+ }
+
+ public final T addReprocessClassInitializerAnnotations() {
+ return addTestingAnnotation(ReprocessClassInitializer.class);
+ }
+
+ public final T addReprocessMethodAnnotations() {
+ return addTestingAnnotation(ReprocessMethod.class);
+ }
+
+ public final T addSideEffectAnnotations() {
+ return addTestingAnnotation(AssumeMayHaveSideEffects.class);
+ }
+
+ public final T addUnusedArgumentAnnotations() {
+ return addTestingAnnotation(KeepUnusedArguments.class);
+ }
+
+ private T addTestingAnnotation(Class<? extends Annotation> clazz) {
+ return addedTestingAnnotations.add(clazz) ? addProgramClasses(clazz) : self();
+ }
+
private static String getMethodLine(MethodReference method) {
// Should we encode modifiers in method references?
StringBuilder builder = new StringBuilder();
diff --git a/src/test/java/com/android/tools/r8/accessrelaxation/NoRelaxationForSerializableTest.java b/src/test/java/com/android/tools/r8/accessrelaxation/NoRelaxationForSerializableTest.java
index 7521316..83a0155 100644
--- a/src/test/java/com/android/tools/r8/accessrelaxation/NoRelaxationForSerializableTest.java
+++ b/src/test/java/com/android/tools/r8/accessrelaxation/NoRelaxationForSerializableTest.java
@@ -125,9 +125,11 @@
assumeTrue(parameters.isCfRuntime());
testForProguard()
.addProgramClasses(CLASSES)
- .addTestingAnnotationsAsProgramClasses()
.addKeepRuleFiles(configuration)
.addKeepRules(KEEPMEMBER_RULES)
+ .addInliningAnnotations()
+ .addMemberValuePropagationAnnotations()
+ .addNoVerticalClassMergingAnnotations()
.compile()
.run(parameters.getRuntime(), MAIN)
.assertSuccessWithOutput(EXPECTED_OUTPUT)
@@ -158,7 +160,9 @@
assumeTrue(parameters.isCfRuntime());
testForProguard()
.addProgramClasses(CLASSES)
- .addTestingAnnotationsAsProgramClasses()
+ .addInliningAnnotations()
+ .addMemberValuePropagationAnnotations()
+ .addNoVerticalClassMergingAnnotations()
.addKeepRuleFiles(configuration)
.compile()
.run(parameters.getRuntime(), MAIN)
diff --git a/src/test/java/com/android/tools/r8/classmerging/horizontal/NonReboundFieldAccessWithMergedTypeTest.java b/src/test/java/com/android/tools/r8/classmerging/horizontal/NonReboundFieldAccessWithMergedTypeTest.java
index b6183a3..79aae15 100644
--- a/src/test/java/com/android/tools/r8/classmerging/horizontal/NonReboundFieldAccessWithMergedTypeTest.java
+++ b/src/test/java/com/android/tools/r8/classmerging/horizontal/NonReboundFieldAccessWithMergedTypeTest.java
@@ -6,7 +6,6 @@
import com.android.tools.r8.NeverClassInline;
import com.android.tools.r8.TestParameters;
-import com.android.tools.r8.classmerging.horizontal.NonReboundFieldAccessOnMergedClassTest.C;
import com.android.tools.r8.classmerging.horizontal.testclasses.NonReboundFieldAccessWithMergedTypeTestClasses;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/src/test/java/com/android/tools/r8/classmerging/horizontal/PreventMergeMainDexTracingTest.java b/src/test/java/com/android/tools/r8/classmerging/horizontal/PreventMergeMainDexTracingTest.java
index 6a31a5e..13d8a62 100644
--- a/src/test/java/com/android/tools/r8/classmerging/horizontal/PreventMergeMainDexTracingTest.java
+++ b/src/test/java/com/android/tools/r8/classmerging/horizontal/PreventMergeMainDexTracingTest.java
@@ -13,7 +13,6 @@
import com.android.tools.r8.OutputMode;
import com.android.tools.r8.R8TestCompileResult;
import com.android.tools.r8.TestParameters;
-import com.android.tools.r8.classmerging.horizontal.PreventMergeMainDexListTest.Main;
import com.android.tools.r8.utils.BooleanUtils;
import com.android.tools.r8.utils.codeinspector.CodeInspector;
import java.nio.file.Path;
diff --git a/src/test/java/com/android/tools/r8/classmerging/horizontal/TreeFixerConstructorCollisionTest.java b/src/test/java/com/android/tools/r8/classmerging/horizontal/TreeFixerConstructorCollisionTest.java
index c7a7d9c..5239543 100644
--- a/src/test/java/com/android/tools/r8/classmerging/horizontal/TreeFixerConstructorCollisionTest.java
+++ b/src/test/java/com/android/tools/r8/classmerging/horizontal/TreeFixerConstructorCollisionTest.java
@@ -12,10 +12,6 @@
import com.android.tools.r8.NeverInline;
import com.android.tools.r8.NoHorizontalClassMerging;
import com.android.tools.r8.TestParameters;
-import com.android.tools.r8.classmerging.horizontal.TreeFixerCollisionTest.A;
-import com.android.tools.r8.classmerging.horizontal.TreeFixerCollisionTest.B;
-import com.android.tools.r8.classmerging.horizontal.TreeFixerCollisionTest.C;
-import com.android.tools.r8.classmerging.horizontal.TreeFixerCollisionTest.Main;
import org.junit.Test;
public class TreeFixerConstructorCollisionTest extends HorizontalClassMergingTestBase {
diff --git a/src/test/java/com/android/tools/r8/classmerging/horizontal/TreeFixerInterfaceCollisionTest.java b/src/test/java/com/android/tools/r8/classmerging/horizontal/TreeFixerInterfaceCollisionTest.java
index 946e113..6f3c8f8 100644
--- a/src/test/java/com/android/tools/r8/classmerging/horizontal/TreeFixerInterfaceCollisionTest.java
+++ b/src/test/java/com/android/tools/r8/classmerging/horizontal/TreeFixerInterfaceCollisionTest.java
@@ -13,8 +13,6 @@
import com.android.tools.r8.NoHorizontalClassMerging;
import com.android.tools.r8.NoVerticalClassMerging;
import com.android.tools.r8.TestParameters;
-import com.android.tools.r8.classmerging.horizontal.TreeFixerInterfaceFixedCollisionTest.B;
-import com.android.tools.r8.classmerging.horizontal.TreeFixerInterfaceImplementedByParentTest.I;
import com.android.tools.r8.utils.codeinspector.ClassSubject;
import org.junit.Test;
diff --git a/src/test/java/com/android/tools/r8/classmerging/horizontal/TreeFixerInterfaceFixedCollisionTest.java b/src/test/java/com/android/tools/r8/classmerging/horizontal/TreeFixerInterfaceFixedCollisionTest.java
index 1d3290a..627838f 100644
--- a/src/test/java/com/android/tools/r8/classmerging/horizontal/TreeFixerInterfaceFixedCollisionTest.java
+++ b/src/test/java/com/android/tools/r8/classmerging/horizontal/TreeFixerInterfaceFixedCollisionTest.java
@@ -13,10 +13,6 @@
import com.android.tools.r8.NoHorizontalClassMerging;
import com.android.tools.r8.NoVerticalClassMerging;
import com.android.tools.r8.TestParameters;
-import com.android.tools.r8.classmerging.horizontal.TreeFixerInterfaceCollisionTest.C;
-import com.android.tools.r8.classmerging.horizontal.TreeFixerInterfaceImplementedByParentTest.B;
-import com.android.tools.r8.classmerging.horizontal.TreeFixerInterfaceImplementedByParentTest.E;
-import com.android.tools.r8.classmerging.horizontal.TreeFixerInterfaceImplementedByParentTest.I;
import com.android.tools.r8.utils.codeinspector.ClassSubject;
import org.junit.Test;
diff --git a/src/test/java/com/android/tools/r8/classmerging/horizontal/VerticallyMergedClassTest.java b/src/test/java/com/android/tools/r8/classmerging/horizontal/VerticallyMergedClassTest.java
index a40b387..abd38f5 100644
--- a/src/test/java/com/android/tools/r8/classmerging/horizontal/VerticallyMergedClassTest.java
+++ b/src/test/java/com/android/tools/r8/classmerging/horizontal/VerticallyMergedClassTest.java
@@ -12,7 +12,6 @@
import com.android.tools.r8.NeverInline;
import com.android.tools.r8.NoHorizontalClassMerging;
import com.android.tools.r8.TestParameters;
-import com.android.tools.r8.classmerging.horizontal.ConstructorMergingOverlapTest.Main;
import org.junit.Test;
public class VerticallyMergedClassTest extends HorizontalClassMergingTestBase {
diff --git a/src/test/java/com/android/tools/r8/compatproguard/CompatKeepClassMemberNamesTestRunner.java b/src/test/java/com/android/tools/r8/compatproguard/CompatKeepClassMemberNamesTestRunner.java
index de0e481..034f226 100644
--- a/src/test/java/com/android/tools/r8/compatproguard/CompatKeepClassMemberNamesTestRunner.java
+++ b/src/test/java/com/android/tools/r8/compatproguard/CompatKeepClassMemberNamesTestRunner.java
@@ -11,7 +11,6 @@
import static org.junit.Assert.assertTrue;
import com.android.tools.r8.BaseCompilerCommand;
-import com.android.tools.r8.NeverInline;
import com.android.tools.r8.ProguardVersion;
import com.android.tools.r8.TestBase;
import com.android.tools.r8.TestCompileResult;
@@ -40,8 +39,7 @@
private static Class<?> MAIN_CLASS = CompatKeepClassMemberNamesTest.class;
private static Class<?> BAR_CLASS = CompatKeepClassMemberNamesTest.Bar.class;
- private static Collection<Class<?>> CLASSES =
- ImmutableList.of(MAIN_CLASS, BAR_CLASS, NeverInline.class);
+ private static Collection<Class<?>> CLASSES = ImmutableList.of(MAIN_CLASS, BAR_CLASS);
private static String KEEP_RULE =
"class "
@@ -112,7 +110,12 @@
T extends TestShrinkerBuilder<C, B, CR, RR, T>>
void testWithoutRules(TestShrinkerBuilder<C, B, CR, RR, T> builder) throws Exception {
assertBarIsAbsent(
- builder.addProgramClasses(CLASSES).addKeepMainRule(MAIN_CLASS).noMinification().compile());
+ builder
+ .addProgramClasses(CLASSES)
+ .addKeepMainRule(MAIN_CLASS)
+ .addInliningAnnotations()
+ .noMinification()
+ .compile());
}
@Test
@@ -207,6 +210,7 @@
.addProgramClasses(CLASSES)
.addKeepMainRule(MAIN_CLASS)
.addKeepRules("-keepclassmembers " + KEEP_RULE_NON_STATIC)
+ .addInliningAnnotations()
.noMinification();
}
@@ -238,7 +242,8 @@
return builder
.addProgramClasses(CLASSES)
.addKeepMainRule(MAIN_CLASS)
- .addKeepRules("-keepclassmembers " + KEEP_RULE);
+ .addKeepRules("-keepclassmembers " + KEEP_RULE)
+ .addInliningAnnotations();
}
private <CR extends TestCompileResult<CR, RR>, RR extends TestRunResult<RR>>
@@ -309,6 +314,7 @@
builder
.addProgramClasses(CLASSES)
.addKeepMainRule(MAIN_CLASS)
+ .addInliningAnnotations()
.noMinification()
.addKeepRules("-keepclassmembers class " + Bar.class.getTypeName())
.compile());
@@ -394,7 +400,8 @@
return builder
.addProgramClasses(CLASSES)
.addKeepMainRule(MAIN_CLASS)
- .addKeepRules("-keepclassmembernames " + KEEP_RULE);
+ .addKeepRules("-keepclassmembernames " + KEEP_RULE)
+ .addInliningAnnotations();
}
private <CR extends TestCompileResult<CR, RR>, RR extends TestRunResult<RR>>
diff --git a/src/test/java/com/android/tools/r8/ir/optimize/NonNullParamTest.java b/src/test/java/com/android/tools/r8/ir/optimize/NonNullParamTest.java
index 964848a..04b870f 100644
--- a/src/test/java/com/android/tools/r8/ir/optimize/NonNullParamTest.java
+++ b/src/test/java/com/android/tools/r8/ir/optimize/NonNullParamTest.java
@@ -65,7 +65,6 @@
.addProgramClasses(classes)
.addKeepMainRule(mainClass)
.addKeepRules(ImmutableList.of("-keepattributes InnerClasses,Signature,EnclosingMethod"))
- .addTestingAnnotationsAsProgramClasses()
// All tests are checking if invocations to certain null-check utils are gone.
.noMinification()
.addOptionsModification(
diff --git a/src/test/java/com/android/tools/r8/ir/optimize/inliner/SingleTargetAfterInliningTest.java b/src/test/java/com/android/tools/r8/ir/optimize/inliner/SingleTargetAfterInliningTest.java
index f5c7da8..2012c6f 100644
--- a/src/test/java/com/android/tools/r8/ir/optimize/inliner/SingleTargetAfterInliningTest.java
+++ b/src/test/java/com/android/tools/r8/ir/optimize/inliner/SingleTargetAfterInliningTest.java
@@ -54,7 +54,6 @@
.enableNeverClassInliningAnnotations()
.enableNoHorizontalClassMergingAnnotations()
.enableSideEffectAnnotations()
- .enableNoHorizontalClassMergingAnnotations()
.setMinApi(parameters.getApiLevel())
.compile()
.inspect(this::inspect)
diff --git a/src/test/java/com/android/tools/r8/ir/optimize/reflection/GetNameInClassInitializerTest.java b/src/test/java/com/android/tools/r8/ir/optimize/reflection/GetNameInClassInitializerTest.java
index d8d0c47..55afd12 100644
--- a/src/test/java/com/android/tools/r8/ir/optimize/reflection/GetNameInClassInitializerTest.java
+++ b/src/test/java/com/android/tools/r8/ir/optimize/reflection/GetNameInClassInitializerTest.java
@@ -45,7 +45,6 @@
builder.addAll(ToolHelper.getClassFilesForTestDirectory(
ToolHelper.getPackageDirectoryForTestPackage(MAIN.getPackage()),
path -> path.getFileName().toString().startsWith("GetNameClinit")));
- builder.add(ToolHelper.getClassFileForTestClass(NeverInline.class));
classPaths = builder.build();
}
diff --git a/src/test/java/com/android/tools/r8/ir/optimize/reflection/GetSimpleNameTest.java b/src/test/java/com/android/tools/r8/ir/optimize/reflection/GetSimpleNameTest.java
index 14d7837..a9a5c6f 100644
--- a/src/test/java/com/android/tools/r8/ir/optimize/reflection/GetSimpleNameTest.java
+++ b/src/test/java/com/android/tools/r8/ir/optimize/reflection/GetSimpleNameTest.java
@@ -125,16 +125,6 @@
"Inner",
"Inner"
);
- private static final String OUTPUT_WITH_SHRUNK_ATTRIBUTES = StringUtils.lines(
- "Local_t03",
- "InnerLocal",
- "$",
- "$$",
- "Local[][][]",
- "[][][]",
- "Outer$Inner",
- "Outer$Inner"
- );
// JDK8 computes the simple name differently: some assumptions about non-member classes,
// e.g., 1 or more digits (followed by the simple name if it's local).
// Since JDK9, the simple name is computed by stripping off the package name.
@@ -171,8 +161,6 @@
builder.add(ToolHelper.getClassFileForTestClass(Outer.class));
builder.add(ToolHelper.getClassFileForTestClass(Outer.Inner.class));
builder.add(ToolHelper.getClassFileForTestClass(Outer.TestHelper.class));
- builder.add(ToolHelper.getClassFileForTestClass(ForceInline.class));
- builder.add(ToolHelper.getClassFileForTestClass(NeverInline.class));
classPaths = builder.build();
}
diff --git a/src/test/java/com/android/tools/r8/ir/optimize/staticizer/ClassStaticizerTest.java b/src/test/java/com/android/tools/r8/ir/optimize/staticizer/ClassStaticizerTest.java
index 9d4c185..9ee6ad7 100644
--- a/src/test/java/com/android/tools/r8/ir/optimize/staticizer/ClassStaticizerTest.java
+++ b/src/test/java/com/android/tools/r8/ir/optimize/staticizer/ClassStaticizerTest.java
@@ -13,7 +13,6 @@
import static org.junit.Assert.assertTrue;
import com.android.tools.r8.CompilationFailedException;
-import com.android.tools.r8.NeverInline;
import com.android.tools.r8.R8TestRunResult;
import com.android.tools.r8.SingleTestRunResult;
import com.android.tools.r8.TestBase;
@@ -88,7 +87,6 @@
private static final Class<?> main = TrivialTestClass.class;
private static final Class<?>[] classes = {
- NeverInline.class,
TrivialTestClass.class,
Simple.class,
SimpleWithGetter.class,
@@ -238,7 +236,6 @@
public void testMoveToHost_fieldOnly() throws Exception {
Class<?> main = MoveToHostFieldOnlyTestClass.class;
Class<?>[] classes = {
- NeverInline.class,
MoveToHostFieldOnlyTestClass.class,
HostOkFieldOnly.class,
CandidateOkFieldOnly.class
@@ -269,7 +266,6 @@
public void testMoveToHost() throws Exception {
Class<?> main = MoveToHostTestClass.class;
Class<?>[] classes = {
- NeverInline.class,
MoveToHostTestClass.class,
HostOk.class,
CandidateOk.class,
diff --git a/src/test/java/com/android/tools/r8/naming/applymapping/ApplyMappingAfterHorizontalMergingFieldTest.java b/src/test/java/com/android/tools/r8/naming/applymapping/ApplyMappingAfterHorizontalMergingFieldTest.java
index dc74758..5da69a2 100644
--- a/src/test/java/com/android/tools/r8/naming/applymapping/ApplyMappingAfterHorizontalMergingFieldTest.java
+++ b/src/test/java/com/android/tools/r8/naming/applymapping/ApplyMappingAfterHorizontalMergingFieldTest.java
@@ -82,7 +82,6 @@
testForJvm()
.addProgramClasses(LIBRARY_CLASSES)
.addProgramClasses(PROGRAM_CLASSES)
- .addTestingAnnotationsAsProgramClasses()
.run(parameters.getRuntime(), ProgramClass.class)
.assertSuccessWithOutput(EXPECTED_SUCCESS);
}
@@ -92,7 +91,6 @@
R8TestCompileResult libraryResult =
testForR8(parameters.getBackend())
.addProgramClasses(LIBRARY_CLASSES)
- .addTestingAnnotationsAsProgramClasses()
.addKeepMainRule(LibraryMain.class)
.setMinApi(parameters.getApiLevel())
.compile();
diff --git a/src/test/java/com/android/tools/r8/naming/applymapping/ApplyMappingAfterHorizontalMergingMethodTest.java b/src/test/java/com/android/tools/r8/naming/applymapping/ApplyMappingAfterHorizontalMergingMethodTest.java
index 7429e57..e101caa 100644
--- a/src/test/java/com/android/tools/r8/naming/applymapping/ApplyMappingAfterHorizontalMergingMethodTest.java
+++ b/src/test/java/com/android/tools/r8/naming/applymapping/ApplyMappingAfterHorizontalMergingMethodTest.java
@@ -63,7 +63,6 @@
// Test runner code follows.
private static final Class<?>[] LIBRARY_CLASSES = {
- NeverInline.class,
LibraryA.class,
LibraryB.class,
LibraryMain.class
diff --git a/src/test/java/com/android/tools/r8/naming/b130791310/B130791310.java b/src/test/java/com/android/tools/r8/naming/b130791310/B130791310.java
index 23271e2..ad2f639 100644
--- a/src/test/java/com/android/tools/r8/naming/b130791310/B130791310.java
+++ b/src/test/java/com/android/tools/r8/naming/b130791310/B130791310.java
@@ -122,7 +122,7 @@
.addProgramClasses(CLASSES)
.addKeepClassAndMembersRules(MAIN)
.addKeepRules(RULES)
- .addTestingAnnotationsAsProgramClasses()
+ .addNeverClassInliningAnnotations()
.setMinApi(parameters.getApiLevel())
.applyIf(
!enableClassMerging, builder -> builder.addKeepRules("-optimizations !class/merging/*"))
diff --git a/src/test/java/com/android/tools/r8/shaking/annotations/AnnotationsOnTargetedMethodTest.java b/src/test/java/com/android/tools/r8/shaking/annotations/AnnotationsOnTargetedMethodTest.java
index c4d9068..ace926f 100644
--- a/src/test/java/com/android/tools/r8/shaking/annotations/AnnotationsOnTargetedMethodTest.java
+++ b/src/test/java/com/android/tools/r8/shaking/annotations/AnnotationsOnTargetedMethodTest.java
@@ -5,6 +5,7 @@
package com.android.tools.r8.shaking.annotations;
import com.android.tools.r8.NeverInline;
+import com.android.tools.r8.NoHorizontalClassMerging;
import com.android.tools.r8.NoVerticalClassMerging;
import com.android.tools.r8.TestBase;
import com.android.tools.r8.TestParameters;
@@ -34,7 +35,7 @@
@Parameters(name = "{0}")
public static TestParametersCollection data() {
- return getTestParameters().withAllRuntimes().withAllApiLevels().build();
+ return getTestParameters().withAllRuntimesAndApiLevels().build();
}
public AnnotationsOnTargetedMethodTest(TestParameters parameters) {
@@ -52,9 +53,11 @@
testForR8(parameters.getBackend())
.addInnerClasses(AnnotationsOnTargetedMethodTest.class)
.addKeepMainRule(TestClass.class)
- .addKeepRules("-keepattributes *Annotation*", "-dontobfuscate")
+ .addKeepRuntimeVisibleAnnotations()
.enableInliningAnnotations()
+ .enableNoHorizontalClassMergingAnnotations()
.enableNoVerticalClassMergingAnnotations()
+ .noMinification()
.setMinApi(parameters.getApiLevel())
.run(parameters.getRuntime(), TestClass.class)
.assertSuccessWithOutput(expectedOutput);
@@ -91,6 +94,7 @@
void targetedMethod();
}
+ @NoHorizontalClassMerging
static class InterfaceImpl implements Interface {
@NeverInline
@@ -100,6 +104,7 @@
}
}
+ @NoHorizontalClassMerging
static class OtherInterfaceImpl implements Interface {
@NeverInline
diff --git a/src/test/java/com/android/tools/r8/shaking/ifrule/IfOnAccessModifierTest.java b/src/test/java/com/android/tools/r8/shaking/ifrule/IfOnAccessModifierTest.java
index 445e24b..7c3a2d9 100644
--- a/src/test/java/com/android/tools/r8/shaking/ifrule/IfOnAccessModifierTest.java
+++ b/src/test/java/com/android/tools/r8/shaking/ifrule/IfOnAccessModifierTest.java
@@ -54,13 +54,12 @@
switch (shrinker) {
case PROGUARD6:
assertTrue(parameters.isCfRuntime());
- return testForProguard().addTestingAnnotationsAsProgramClasses();
+ return testForProguard().addInliningAnnotations().addNeverClassInliningAnnotations();
case R8:
return testForR8(parameters.getBackend())
- .addTestingAnnotationsAsProgramClasses()
.allowUnusedProguardConfigurationRules(allowDiagnosticInfoMessages)
- .enableNeverClassInliningAnnotations()
- .enableInliningAnnotations();
+ .enableInliningAnnotations()
+ .enableNeverClassInliningAnnotations();
default:
throw new Unreachable();
}