Mark annotations as kept if we are running with noShrinking

Bug: 183019116
Change-Id: I3e4963d20c3ae70ca510b229d1fe76b655ec3261
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 34c11ee..a561761 100644
--- a/src/main/java/com/android/tools/r8/shaking/AnnotationRemover.java
+++ b/src/main/java/com/android/tools/r8/shaking/AnnotationRemover.java
@@ -72,6 +72,10 @@
       DexDefinition holder,
       DexAnnotation annotation,
       boolean isAnnotationTypeLive) {
+    // If we cannot run the AnnotationRemover we are keeping the annotation.
+    if (!appView.options().isShrinking()) {
+      return true;
+    }
     ProguardKeepAttributes config =
         appView.options().getProguardConfiguration() != null
             ? appView.options().getProguardConfiguration().getKeepAttributes()
diff --git a/src/test/java/com/android/tools/r8/missingclasses/MissingClassReferencedFromThrowsClauseWithNoShrinkingTest.java b/src/test/java/com/android/tools/r8/missingclasses/MissingClassReferencedFromThrowsClauseWithNoShrinkingTest.java
index daf00dd..b9d0ef6 100644
--- a/src/test/java/com/android/tools/r8/missingclasses/MissingClassReferencedFromThrowsClauseWithNoShrinkingTest.java
+++ b/src/test/java/com/android/tools/r8/missingclasses/MissingClassReferencedFromThrowsClauseWithNoShrinkingTest.java
@@ -4,12 +4,15 @@
 
 package com.android.tools.r8.missingclasses;
 
-import static org.hamcrest.CoreMatchers.containsString;
-
 import com.android.tools.r8.CompilationFailedException;
 import com.android.tools.r8.NeverInline;
 import com.android.tools.r8.TestParameters;
+import com.android.tools.r8.diagnostic.MissingDefinitionContext;
+import com.android.tools.r8.diagnostic.internal.MissingDefinitionMethodContextImpl;
+import com.android.tools.r8.origin.Origin;
+import com.android.tools.r8.references.Reference;
 import com.android.tools.r8.utils.DescriptorUtils;
+import com.google.common.collect.ImmutableList;
 import org.junit.Test;
 
 public class MissingClassReferencedFromThrowsClauseWithNoShrinkingTest
@@ -18,6 +21,14 @@
   private static final String NEW_A_DESCRIPTOR = "Lfoo/a;";
   private static final String NEW_B_DESCRIPTOR = "Lfoo/b;";
 
+  private static final MissingDefinitionContext referencedFrom =
+      MissingDefinitionMethodContextImpl.builder()
+          .setMethodContext(
+              Reference.method(
+                  Reference.classFromDescriptor("Lfoo/a;"), "foo", ImmutableList.of(), null))
+          .setOrigin(Origin.unknown())
+          .build();
+
   public MissingClassReferencedFromThrowsClauseWithNoShrinkingTest(TestParameters parameters) {
     super(parameters);
   }
@@ -26,12 +37,7 @@
   public void testNoShrinking() throws Exception {
     compileWithExpectedDiagnostics(
         Main.class,
-        diagnostics -> {
-          // TODO(b/183019116): Should not report the type as missing.
-          diagnostics.assertErrorMessageThatMatches(
-              containsString(
-                  "Failed lookup of non-missing type: " + MissingClass.class.getTypeName()));
-        },
+        diagnostics -> inspectDiagnosticsWithNoRules(diagnostics, referencedFrom),
         b -> {
           b.addProgramClassFileData(
               transformer(A.class)