Maintain annotations in non shrinking L8 builds
Bug: 206002971
Change-Id: I1f069a4f7b3684d856321d6cdbf09c52a03683f0
diff --git a/src/main/java/com/android/tools/r8/L8.java b/src/main/java/com/android/tools/r8/L8.java
index 9946047..b0eec1a 100644
--- a/src/main/java/com/android/tools/r8/L8.java
+++ b/src/main/java/com/android/tools/r8/L8.java
@@ -19,7 +19,6 @@
import com.android.tools.r8.naming.PrefixRewritingNamingLens;
import com.android.tools.r8.naming.signature.GenericSignatureRewriter;
import com.android.tools.r8.origin.CommandLineOrigin;
-import com.android.tools.r8.shaking.AnnotationRemover;
import com.android.tools.r8.shaking.L8TreePruner;
import com.android.tools.r8.synthesis.SyntheticFinalization;
import com.android.tools.r8.utils.AndroidApp;
@@ -135,10 +134,6 @@
AppView<AppInfo> appView = readApp(inputApp, options, executor, timing);
- if (!options.testing.disableL8AnnotationRemoval) {
- AnnotationRemover.clearAnnotations(appView);
- }
-
new IRConverter(appView, timing).convert(appView, executor);
SyntheticFinalization.finalize(appView, executor);
diff --git a/src/main/java/com/android/tools/r8/shaking/AnnotationRemover.java b/src/main/java/com/android/tools/r8/shaking/AnnotationRemover.java
index 32654be..244257a 100644
--- a/src/main/java/com/android/tools/r8/shaking/AnnotationRemover.java
+++ b/src/main/java/com/android/tools/r8/shaking/AnnotationRemover.java
@@ -9,7 +9,6 @@
import com.android.tools.r8.graph.DexAnnotation.AnnotatedKind;
import com.android.tools.r8.graph.DexAnnotationElement;
import com.android.tools.r8.graph.DexClass;
-import com.android.tools.r8.graph.DexDefinition;
import com.android.tools.r8.graph.DexEncodedAnnotation;
import com.android.tools.r8.graph.DexItemFactory;
import com.android.tools.r8.graph.DexProgramClass;
@@ -385,13 +384,6 @@
}
}
- public static void clearAnnotations(AppView<?> appView) {
- for (DexProgramClass clazz : appView.appInfo().classes()) {
- clazz.clearAnnotations();
- clazz.members().forEach(DexDefinition::clearAnnotations);
- }
- }
-
public static class Builder {
/**
diff --git a/src/main/java/com/android/tools/r8/utils/InternalOptions.java b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
index de70549..937dc5d 100644
--- a/src/main/java/com/android/tools/r8/utils/InternalOptions.java
+++ b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
@@ -1637,7 +1637,6 @@
public boolean allowInvokeErrors = false;
public boolean allowUnnecessaryDontWarnWildcards = true;
public boolean allowUnusedDontWarnRules = true;
- public boolean disableL8AnnotationRemoval = false;
public boolean reportUnusedProguardConfigurationRules = false;
public boolean alwaysUseExistingAccessInfoCollectionsInMemberRebinding = true;
public boolean alwaysUsePessimisticRegisterAllocation = false;
diff --git a/src/test/java/com/android/tools/r8/L8TestBuilder.java b/src/test/java/com/android/tools/r8/L8TestBuilder.java
index 072da5a..e672f87 100644
--- a/src/test/java/com/android/tools/r8/L8TestBuilder.java
+++ b/src/test/java/com/android/tools/r8/L8TestBuilder.java
@@ -139,11 +139,6 @@
return this;
}
- public L8TestBuilder setDisableL8AnnotationRemoval(boolean disableL8AnnotationRemoval) {
- return addOptionsModifier(
- options -> options.testing.disableL8AnnotationRemoval = disableL8AnnotationRemoval);
- }
-
public L8TestCompileResult compile()
throws IOException, CompilationFailedException, ExecutionException {
// We wrap exceptions in a RuntimeException to call this from a lambda.
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/DesugaredLibraryTestBase.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/DesugaredLibraryTestBase.java
index 645588c..e57aaa9 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/DesugaredLibraryTestBase.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/DesugaredLibraryTestBase.java
@@ -163,10 +163,6 @@
L8TestBuilder::setDebug)
.addOptionsModifier(optionsModifier)
.setDesugarJDKLibsConfiguration(ToolHelper.DESUGAR_LIB_CONVERSIONS)
- // If we compile extended library here, it means we use TestNG. TestNG requires
- // annotations, hence we disable annotation removal. This implies that extra warnings are
- // generated.
- .setDisableL8AnnotationRemoval(!additionalProgramFiles.isEmpty())
.compile()
.applyIf(
additionalProgramFiles.isEmpty(),