Ensure repackaging do not pick types that has been pruned

Bug: 183111898
Change-Id: I6125dba726cad04e09e41718dd1cea5c38efd749
diff --git a/src/main/java/com/android/tools/r8/repackaging/Repackaging.java b/src/main/java/com/android/tools/r8/repackaging/Repackaging.java
index 48227b4..c6612c5 100644
--- a/src/main/java/com/android/tools/r8/repackaging/Repackaging.java
+++ b/src/main/java/com/android/tools/r8/repackaging/Repackaging.java
@@ -427,7 +427,7 @@
       }
       // Ensure that the generated name is unique.
       DexType finalRepackagedDexType = repackagedDexType;
-      for (int i = 1; mappings.inverse().containsKey(finalRepackagedDexType); i++) {
+      for (int i = 1; isRepackageTypeUsed(finalRepackagedDexType, mappings, appView); i++) {
         finalRepackagedDexType =
             repackagedDexType.addSuffix(
                 Character.toString(INNER_CLASS_SEPARATOR) + i, dexItemFactory);
@@ -436,6 +436,12 @@
     }
   }
 
+  private static boolean isRepackageTypeUsed(
+      DexType type, BiMap<DexType, DexType> mappings, AppView<?> appView) {
+    return mappings.inverse().containsKey(type)
+        || (appView.hasLiveness() && appView.withLiveness().appInfo().wasPruned(type));
+  }
+
   /** Testing only. */
   public static class SuffixRenamingRepackagingConfiguration implements RepackagingConfiguration {
 
diff --git a/src/test/java/com/android/tools/r8/classmerging/horizontal/MergeWithRepackageNameCollissionTest.java b/src/test/java/com/android/tools/r8/classmerging/horizontal/MergeWithRepackageNameCollissionTest.java
index 7f7e655..f3772a7 100644
--- a/src/test/java/com/android/tools/r8/classmerging/horizontal/MergeWithRepackageNameCollissionTest.java
+++ b/src/test/java/com/android/tools/r8/classmerging/horizontal/MergeWithRepackageNameCollissionTest.java
@@ -4,9 +4,6 @@
 
 package com.android.tools.r8.classmerging.horizontal;
 
-import static org.hamcrest.CoreMatchers.containsString;
-
-import com.android.tools.r8.CompilationFailedException;
 import com.android.tools.r8.NeverInline;
 import com.android.tools.r8.NoHorizontalClassMerging;
 import com.android.tools.r8.TestParameters;
@@ -27,7 +24,7 @@
     super(parameters);
   }
 
-  @Test(expected = CompilationFailedException.class)
+  @Test
   public void testR8() throws Exception {
     testForR8(parameters.getBackend())
         .addProgramClassFileData(getProgramFileData())
@@ -37,12 +34,8 @@
         .setMinApi(parameters.getApiLevel())
         .enableNoHorizontalClassMergingAnnotations()
         .enableInliningAnnotations()
-        .compileWithExpectedDiagnostics(
-            diagnostics -> {
-              // TODO(b/183111898): Should not fail.
-              diagnostics.assertErrorMessageThatMatches(
-                  containsString("The lens and app is inconsistent"));
-            });
+        .run(parameters.getRuntime(), Main.class)
+        .assertSuccessWithOutputLines("C::baz", "Hello World");
   }
 
   private Collection<byte[]> getProgramFileData() throws Exception {