Revert "Add traced main dex classes to set prior to repackaging"

This reverts commit 97df980318de170330bc99ad68b85cfe251bdb33.

Reason for revert: Internal bot failures

Change-Id: I375f0efa63ceb1ab34bd42914124d4186b8f994b
diff --git a/src/main/java/com/android/tools/r8/R8.java b/src/main/java/com/android/tools/r8/R8.java
index 0a41c48..1dc771e 100644
--- a/src/main/java/com/android/tools/r8/R8.java
+++ b/src/main/java/com/android/tools/r8/R8.java
@@ -810,11 +810,6 @@
           MemberRebindingIdentityLensFactory.create(appView, executorService);
       appView.setGraphLens(memberRebindingLens);
 
-      // Add automatic main dex classes to an eventual manual list of classes.
-      if (!options.mainDexKeepRules.isEmpty()) {
-        appView.appInfo().getMainDexClasses().addAll(mainDexTracingResult);
-      }
-
       // Perform repackaging.
       if (options.isRepackagingEnabled()) {
         DirectMappedDexApplication.Builder appBuilder =
@@ -833,6 +828,11 @@
       }
       assert Repackaging.verifyIdentityRepackaging(appView);
 
+      // Add automatic main dex classes to an eventual manual list of classes.
+      if (!options.mainDexKeepRules.isEmpty()) {
+        appView.appInfo().getMainDexClasses().addAll(mainDexTracingResult);
+      }
+
       SyntheticFinalization.Result result =
           appView.getSyntheticItems().computeFinalSynthetics(appView);
       if (result != null) {
diff --git a/src/test/java/com/android/tools/r8/repackage/RepackageTestBase.java b/src/test/java/com/android/tools/r8/repackage/RepackageTestBase.java
index f1439ad..9a1ad72 100644
--- a/src/test/java/com/android/tools/r8/repackage/RepackageTestBase.java
+++ b/src/test/java/com/android/tools/r8/repackage/RepackageTestBase.java
@@ -80,13 +80,7 @@
         if (!classSubject.isPresent()) {
           return false;
         }
-        String actualPackage = getActualPackage(classSubject);
-        String expectedPackage = getExpectedPackageForEligibleClass();
-        if (!eligibleForRepackaging) {
-          // The package may have been changed by minification.
-          return !actualPackage.startsWith(expectedPackage);
-        }
-        return actualPackage.equals(expectedPackage);
+        return getActualPackage(classSubject).equals(getExpectedPackage(clazz));
       }
 
       @Override
@@ -119,6 +113,12 @@
         return classSubject.getDexProgramClass().getType().getPackageName();
       }
 
+      private String getExpectedPackage(Class<?> clazz) {
+        return eligibleForRepackaging
+            ? getExpectedPackageForEligibleClass()
+            : clazz.getPackage().getName();
+      }
+
       private String getExpectedPackageForEligibleClass() {
         List<String> expectedPackageNames = new ArrayList<>();
         expectedPackageNames.add(getRepackagePackage());
diff --git a/src/test/java/com/android/tools/r8/repackage/RepackageWithMainDexListTest.java b/src/test/java/com/android/tools/r8/repackage/RepackageWithMainDexListTest.java
index d322cba..4fc28f5 100644
--- a/src/test/java/com/android/tools/r8/repackage/RepackageWithMainDexListTest.java
+++ b/src/test/java/com/android/tools/r8/repackage/RepackageWithMainDexListTest.java
@@ -7,18 +7,12 @@
 import static com.android.tools.r8.shaking.ProguardConfigurationParser.FLATTEN_PACKAGE_HIERARCHY;
 import static com.android.tools.r8.shaking.ProguardConfigurationParser.REPACKAGE_CLASSES;
 import static com.android.tools.r8.utils.codeinspector.Matchers.isPresent;
-import static com.android.tools.r8.utils.codeinspector.Matchers.isPresentAndRenamed;
 import static org.hamcrest.CoreMatchers.not;
 import static org.hamcrest.MatcherAssert.assertThat;
-import static org.junit.Assert.assertEquals;
 
 import com.android.tools.r8.OutputMode;
 import com.android.tools.r8.R8TestCompileResult;
 import com.android.tools.r8.TestParameters;
-import com.android.tools.r8.ToolHelper;
-import com.android.tools.r8.utils.Box;
-import com.android.tools.r8.utils.StringUtils;
-import com.android.tools.r8.utils.codeinspector.ClassSubject;
 import com.android.tools.r8.utils.codeinspector.CodeInspector;
 import com.google.common.collect.ImmutableList;
 import java.nio.file.Path;
@@ -48,7 +42,6 @@
 
   @Test
   public void test() throws Exception {
-    Box<String> r8MainDexList = new Box<>();
     testForR8(parameters.getBackend())
         .addInnerClasses(getClass())
         // -keep,allowobfuscation does not prohibit repackaging.
@@ -58,48 +51,40 @@
         // Add a class that will be repackaged to the main dex list.
         .addMainDexListClasses(TestClass.class)
         .apply(this::configureRepackaging)
-        .setMainDexListConsumer(ToolHelper.consumeString(r8MainDexList::set))
         // Debug mode to enable minimal main dex.
         .debug()
         .setMinApi(parameters.getApiLevel())
         .compile()
-        .apply(result -> checkCompileResult(result, r8MainDexList.get()))
+        .apply(this::checkCompileResult)
         .run(parameters.getRuntime(), TestClass.class)
         .assertSuccessWithOutputLines("Hello world!");
   }
 
-  private void checkCompileResult(R8TestCompileResult compileResult, String mainDexList)
-      throws Exception {
+  private void checkCompileResult(R8TestCompileResult compileResult) throws Exception {
     Path out = temp.newFolder().toPath();
     compileResult.app.writeToDirectory(out, OutputMode.DexIndexed);
     Path classes = out.resolve("classes.dex");
     Path classes2 = out.resolve("classes2.dex");
-    inspectMainDex(new CodeInspector(classes, compileResult.getProguardMap()), mainDexList);
+    inspectMainDex(new CodeInspector(classes, compileResult.getProguardMap()));
     inspectSecondaryDex(new CodeInspector(classes2, compileResult.getProguardMap()));
   }
 
-  private void inspectMainDex(CodeInspector inspector, String mainDexList) {
-    ClassSubject testClass = inspector.clazz(TestClass.class);
-    assertThat(testClass, isPresentAndRenamed());
-    assertThat(TestClass.class, isRepackaged(inspector));
-    List<String> mainDexTypeNames = StringUtils.splitLines(mainDexList);
-    assertEquals(1, mainDexTypeNames.size());
-    assertEquals(testClass.getFinalBinaryName(), mainDexTypeNames.get(0).replace(".class", ""));
+  private void inspectMainDex(CodeInspector inspector) {
+    assertThat(inspector.clazz(TestClass.class), isPresent());
     assertThat(inspector.clazz(OtherTestClass.class), not(isPresent()));
   }
 
   private void inspectSecondaryDex(CodeInspector inspector) {
     assertThat(inspector.clazz(TestClass.class), not(isPresent()));
     assertThat(inspector.clazz(OtherTestClass.class), isPresent());
-    assertThat(OtherTestClass.class, isRepackaged(inspector));
   }
 
-  public static class TestClass {
+  static class TestClass {
 
     public static void main(String[] args) {
       System.out.println("Hello world!");
     }
   }
 
-  public static class OtherTestClass {}
+  static class OtherTestClass {}
 }
diff --git a/src/test/java/com/android/tools/r8/repackage/RepackageWithMainDexNoRepackageTest.java b/src/test/java/com/android/tools/r8/repackage/RepackageWithMainDexNoRepackageTest.java
deleted file mode 100644
index 832629b..0000000
--- a/src/test/java/com/android/tools/r8/repackage/RepackageWithMainDexNoRepackageTest.java
+++ /dev/null
@@ -1,93 +0,0 @@
-// Copyright (c) 2020, the R8 project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-package com.android.tools.r8.repackage;
-
-import static com.android.tools.r8.shaking.ProguardConfigurationParser.FLATTEN_PACKAGE_HIERARCHY;
-import static com.android.tools.r8.shaking.ProguardConfigurationParser.REPACKAGE_CLASSES;
-import static com.android.tools.r8.utils.codeinspector.Matchers.isPresent;
-import static com.android.tools.r8.utils.codeinspector.Matchers.isPresentAndRenamed;
-import static org.hamcrest.CoreMatchers.not;
-import static org.hamcrest.MatcherAssert.assertThat;
-
-import com.android.tools.r8.OutputMode;
-import com.android.tools.r8.R8TestCompileResult;
-import com.android.tools.r8.TestParameters;
-import com.android.tools.r8.utils.codeinspector.CodeInspector;
-import com.google.common.collect.ImmutableList;
-import java.nio.file.Path;
-import java.util.List;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameters;
-
-@RunWith(Parameterized.class)
-public class RepackageWithMainDexNoRepackageTest extends RepackageTestBase {
-
-  @Parameters(name = "{1}, kind: {0}")
-  public static List<Object[]> data() {
-    return buildParameters(
-        ImmutableList.of(FLATTEN_PACKAGE_HIERARCHY, REPACKAGE_CLASSES),
-        getTestParameters()
-            .withDexRuntimes()
-            .withApiLevelsEndingAtExcluding(apiLevelWithNativeMultiDexSupport())
-            .build());
-  }
-
-  public RepackageWithMainDexNoRepackageTest(
-      String flattenPackageHierarchyOrRepackageClasses, TestParameters parameters) {
-    super(flattenPackageHierarchyOrRepackageClasses, parameters);
-  }
-
-  @Test
-  public void test() throws Exception {
-    testForR8(parameters.getBackend())
-        .addInnerClasses(getClass())
-        // -keep,allowobfuscation does not prohibit repackaging.
-        .addKeepClassRulesWithAllowObfuscation(TestClass.class, OtherTestClass.class)
-        .addKeepRules(
-            "-keepclassmembers class " + TestClass.class.getTypeName() + " { <methods>; }")
-        // Add a class that will be repackaged to the main dex list.
-        .addMainDexListClasses(TestClass.class)
-        .apply(this::configureRepackaging)
-        // Debug mode to enable minimal main dex.
-        .debug()
-        .setMinApi(parameters.getApiLevel())
-        .compile()
-        .apply(this::checkCompileResult)
-        .run(parameters.getRuntime(), TestClass.class)
-        .assertSuccessWithOutputLines("Hello world!");
-  }
-
-  private void checkCompileResult(R8TestCompileResult compileResult) throws Exception {
-    Path out = temp.newFolder().toPath();
-    compileResult.app.writeToDirectory(out, OutputMode.DexIndexed);
-    Path classes = out.resolve("classes.dex");
-    Path classes2 = out.resolve("classes2.dex");
-    inspectMainDex(new CodeInspector(classes, compileResult.getProguardMap()));
-    inspectSecondaryDex(new CodeInspector(classes2, compileResult.getProguardMap()));
-  }
-
-  private void inspectMainDex(CodeInspector inspector) {
-    assertThat(inspector.clazz(TestClass.class), isPresentAndRenamed());
-    assertThat(inspector.clazz(OtherTestClass.class), not(isPresent()));
-    assertThat(TestClass.class, isNotRepackaged(inspector));
-  }
-
-  private void inspectSecondaryDex(CodeInspector inspector) {
-    assertThat(inspector.clazz(TestClass.class), not(isPresent()));
-    assertThat(inspector.clazz(OtherTestClass.class), isPresent());
-    assertThat(OtherTestClass.class, isNotRepackaged(inspector));
-  }
-
-  static class TestClass {
-
-    public static void main(String[] args) {
-      System.out.println("Hello world!");
-    }
-  }
-
-  static class OtherTestClass {}
-}
diff --git a/src/test/java/com/android/tools/r8/repackage/RepackageWithMainDexTracingTest.java b/src/test/java/com/android/tools/r8/repackage/RepackageWithMainDexTracingTest.java
deleted file mode 100644
index b258458..0000000
--- a/src/test/java/com/android/tools/r8/repackage/RepackageWithMainDexTracingTest.java
+++ /dev/null
@@ -1,119 +0,0 @@
-// Copyright (c) 2021, the R8 project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-package com.android.tools.r8.repackage;
-
-import static com.android.tools.r8.shaking.ProguardConfigurationParser.FLATTEN_PACKAGE_HIERARCHY;
-import static com.android.tools.r8.shaking.ProguardConfigurationParser.REPACKAGE_CLASSES;
-import static com.android.tools.r8.utils.codeinspector.Matchers.isPresent;
-import static com.android.tools.r8.utils.codeinspector.Matchers.isPresentAndNotRenamed;
-import static com.android.tools.r8.utils.codeinspector.Matchers.isPresentAndRenamed;
-import static org.hamcrest.CoreMatchers.not;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.junit.Assert.assertEquals;
-
-import com.android.tools.r8.NeverClassInline;
-import com.android.tools.r8.NoHorizontalClassMerging;
-import com.android.tools.r8.OutputMode;
-import com.android.tools.r8.R8TestCompileResult;
-import com.android.tools.r8.TestParameters;
-import com.android.tools.r8.ToolHelper;
-import com.android.tools.r8.utils.Box;
-import com.android.tools.r8.utils.StringUtils;
-import com.android.tools.r8.utils.codeinspector.CodeInspector;
-import com.google.common.collect.ImmutableList;
-import java.nio.file.Path;
-import java.util.List;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameters;
-
-@RunWith(Parameterized.class)
-public class RepackageWithMainDexTracingTest extends RepackageTestBase {
-
-  @Parameters(name = "{1}, kind: {0}")
-  public static List<Object[]> data() {
-    return buildParameters(
-        ImmutableList.of(FLATTEN_PACKAGE_HIERARCHY, REPACKAGE_CLASSES),
-        getTestParameters()
-            .withDexRuntimes()
-            .withApiLevelsEndingAtExcluding(apiLevelWithNativeMultiDexSupport())
-            .build());
-  }
-
-  public RepackageWithMainDexTracingTest(
-      String flattenPackageHierarchyOrRepackageClasses, TestParameters parameters) {
-    super(flattenPackageHierarchyOrRepackageClasses, parameters);
-  }
-
-  @Test
-  public void testR8() throws Exception {
-    Box<String> r8MainDexList = new Box<>();
-    testForR8(parameters.getBackend())
-        .addInnerClasses(getClass())
-        .addKeepMainRule(Main.class)
-        .addKeepClassRulesWithAllowObfuscation(Other.class)
-        .addMainDexClassRules(Main.class)
-        .addOptionsModification(options -> options.minimalMainDex = true)
-        .enableNeverClassInliningAnnotations()
-        .enableNoHorizontalClassMergingAnnotations()
-        .setMinApi(parameters.getApiLevel())
-        .setMainDexListConsumer(ToolHelper.consumeString(r8MainDexList::set))
-        .apply(this::configureRepackaging)
-        .compile()
-        .apply(result -> checkCompileResult(result, r8MainDexList.get()))
-        .run(parameters.getRuntime(), Main.class)
-        .assertSuccessWithOutputLines("main dex");
-  }
-
-  private void checkCompileResult(R8TestCompileResult compileResult, String mainDexList)
-      throws Exception {
-    Path out = temp.newFolder().toPath();
-    compileResult.app.writeToDirectory(out, OutputMode.DexIndexed);
-    Path classes = out.resolve("classes.dex");
-    Path classes2 = out.resolve("classes2.dex");
-    inspectMainDex(new CodeInspector(classes, compileResult.getProguardMap()), mainDexList);
-    inspectSecondaryDex(new CodeInspector(classes2, compileResult.getProguardMap()));
-  }
-
-  private void inspectMainDex(CodeInspector inspector, String mainDexList) {
-    assertThat(inspector.clazz(Main.class), isPresentAndNotRenamed());
-    assertThat(Main.class, isNotRepackaged(inspector));
-    assertThat(inspector.clazz(A.class), isPresentAndRenamed());
-    assertThat(A.class, isRepackaged(inspector));
-    List<String> mainDexTypeNames = StringUtils.splitLines(mainDexList);
-    assertEquals(2, mainDexTypeNames.size());
-    assertEquals(
-        inspector.clazz(Main.class).getFinalBinaryName(),
-        mainDexTypeNames.get(0).replace(".class", ""));
-    assertEquals(
-        inspector.clazz(A.class).getFinalBinaryName(),
-        mainDexTypeNames.get(1).replace(".class", ""));
-    assertThat(inspector.clazz(Other.class), not(isPresent()));
-  }
-
-  private void inspectSecondaryDex(CodeInspector inspector) {
-    assertThat(inspector.clazz(Main.class), not(isPresent()));
-    assertThat(inspector.clazz(A.class), not(isPresent()));
-    assertThat(inspector.clazz(Other.class), isPresentAndRenamed());
-    assertThat(Other.class, isRepackaged(inspector));
-  }
-
-  @NoHorizontalClassMerging
-  public static class Other {}
-
-  @NeverClassInline
-  public static class A {
-    public A() {
-      System.out.println("main dex");
-    }
-  }
-
-  public static class Main {
-    public static void main(String[] args) {
-      A a = new A();
-    }
-  }
-}