Bypass missing classes check for reflective accesses

Bug: 160818086
Change-Id: Ifc9f676d3662a43576a5965a86c695c2e99be908
diff --git a/src/main/java/com/android/tools/r8/shaking/Enqueuer.java b/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
index f2cdfea..6fdcb48 100644
--- a/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
+++ b/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
@@ -589,6 +589,12 @@
     return clazz != null && clazz.isProgramClass() ? clazz.asProgramClass() : null;
   }
 
+  private DexProgramClass getProgramClassOrNullFromReflectiveAccess(DexType type) {
+    // This is using appInfo.definitionForWithoutExistenceAssert() to avoid that we report
+    // reflectively accessed types as missing.
+    return asProgramClassOrNull(appInfo().definitionForWithoutExistenceAssert(type));
+  }
+
   private void warnIfLibraryTypeInheritsFromProgramType(DexLibraryClass clazz) {
     if (clazz.superType != null) {
       ensureFromLibraryOrThrow(clazz.superType, clazz);
@@ -3672,11 +3678,7 @@
       return;
     }
     if (identifierItem.isDexType()) {
-      // This is using appView.definitionFor() to avoid that we report reflectively accessed types
-      // as missing.
-      DexProgramClass clazz =
-          asProgramClassOrNull(
-              appInfo().definitionForWithoutExistenceAssert(identifierItem.asDexType()));
+      DexProgramClass clazz = getProgramClassOrNullFromReflectiveAccess(identifierItem.asDexType());
       if (clazz == null) {
         return;
       }
@@ -3756,7 +3758,7 @@
       return;
     }
 
-    DexProgramClass clazz = getProgramClassOrNull(instantiatedType);
+    DexProgramClass clazz = getProgramClassOrNullFromReflectiveAccess(instantiatedType);
     if (clazz == null) {
       return;
     }