Revert "Use ReferenceTrace to collect keep rules for library desugar test"

This reverts commit 0726e427e845fd832e070de28fd412455a9f2b9f.

Reason for revert: Breaks JavaTimeTest

Change-Id: I3099d7dae1a87c4a082479dc3d19c754ff87da2a
diff --git a/src/main/java/com/android/tools/r8/tracereferences/TraceReferences.java b/src/main/java/com/android/tools/r8/tracereferences/TraceReferences.java
index 1dcfb29..4808947 100644
--- a/src/main/java/com/android/tools/r8/tracereferences/TraceReferences.java
+++ b/src/main/java/com/android/tools/r8/tracereferences/TraceReferences.java
@@ -3,6 +3,8 @@
 // BSD-style license that can be found in the LICENSE file.
 package com.android.tools.r8.tracereferences;
 
+import static com.android.tools.r8.utils.ExceptionUtils.STATUS_ERROR;
+
 import com.android.tools.r8.CompilationFailedException;
 import com.android.tools.r8.Keep;
 import com.android.tools.r8.ProgramResource;
@@ -11,7 +13,6 @@
 import com.android.tools.r8.origin.Origin;
 import com.android.tools.r8.utils.AndroidApp;
 import com.android.tools.r8.utils.ExceptionDiagnostic;
-import com.android.tools.r8.utils.ExceptionUtils;
 import java.util.HashSet;
 import java.util.Set;
 
@@ -76,20 +77,25 @@
     formatter.format(result);
   }
 
-  public static void run(String... args) throws CompilationFailedException {
-    TraceReferencesCommand command = TraceReferencesCommand.parse(args, Origin.root()).build();
-    if (command.isPrintHelp()) {
-      System.out.println(TraceReferencesCommandParser.USAGE_MESSAGE);
-      return;
+  public static void main(String... args) {
+    try {
+      TraceReferencesCommand command = TraceReferencesCommand.parse(args, Origin.root()).build();
+      if (command.isPrintHelp()) {
+        System.out.println(TraceReferencesCommandParser.USAGE_MESSAGE);
+        return;
+      }
+      if (command.isPrintVersion()) {
+        System.out.println("referencetrace " + Version.getVersionString());
+        return;
+      }
+      run(command);
+    } catch (CompilationFailedException e) {
+      System.exit(STATUS_ERROR);
+    } catch (Throwable e) {
+      System.err.println("ReferenceTrace failed with an internal error.");
+      Throwable cause = e.getCause() == null ? e : e.getCause();
+      cause.printStackTrace();
+      System.exit(STATUS_ERROR);
     }
-    if (command.isPrintVersion()) {
-      System.out.println("referencetrace " + Version.getVersionString());
-      return;
-    }
-    run(command);
-  }
-
-  public static void main(String[] args) {
-    ExceptionUtils.withMainProgramHandler(() -> run(args));
   }
 }
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/JavaTimeTest.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/JavaTimeTest.java
index 70b46ae..558b5f1 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/JavaTimeTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/JavaTimeTest.java
@@ -13,12 +13,12 @@
 import com.android.tools.r8.L8Command;
 import com.android.tools.r8.NeverInline;
 import com.android.tools.r8.OutputMode;
+import com.android.tools.r8.PrintUses;
 import com.android.tools.r8.StringResource;
 import com.android.tools.r8.TestCompileResult;
 import com.android.tools.r8.TestParameters;
 import com.android.tools.r8.ToolHelper;
 import com.android.tools.r8.graph.DexType;
-import com.android.tools.r8.tracereferences.TraceReferences;
 import com.android.tools.r8.utils.AndroidApiLevel;
 import com.android.tools.r8.utils.BooleanUtils;
 import com.android.tools.r8.utils.FileUtils;
@@ -32,7 +32,6 @@
 import com.android.tools.r8.utils.codeinspector.MethodSubject;
 import com.android.tools.r8.utils.codeinspector.TryCatchSubject;
 import com.android.tools.r8.utils.codeinspector.TypeSubject;
-import com.google.common.base.Charsets;
 import com.google.common.base.Suppliers;
 import com.google.common.collect.ImmutableSet;
 import java.nio.file.Path;
@@ -40,6 +39,7 @@
 import java.util.Set;
 import java.util.function.Supplier;
 import java.util.stream.Collectors;
+import kotlin.text.Charsets;
 import org.junit.Assume;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -51,7 +51,7 @@
 
   private final TestParameters parameters;
   private final boolean shrinkDesugaredLibrary;
-  private final boolean traceReferencesKeepRules;
+  private final boolean printUsesKeepRules;
   private static final String expectedOutput =
       StringUtils.lines(
           "Caught java.time.format.DateTimeParseException",
@@ -61,7 +61,7 @@
           "GMT",
           "Hello, world");
 
-  @Parameters(name = "{2}, shrinkDesugaredLibrary: {0}, traceReferencesKeepRules {1}")
+  @Parameters(name = "{2}, shrinkDesugaredLibrary: {0}, printUsesKeepRules {1}")
   public static List<Object[]> data() {
     return buildParameters(
         BooleanUtils.values(),
@@ -74,9 +74,9 @@
   }
 
   public JavaTimeTest(
-      boolean shrinkDesugaredLibrary, boolean traceReferencesKeepRules, TestParameters parameters) {
+      boolean shrinkDesugaredLibrary, boolean printUsesKeepRules, TestParameters parameters) {
     this.shrinkDesugaredLibrary = shrinkDesugaredLibrary;
-    this.traceReferencesKeepRules = traceReferencesKeepRules;
+    this.printUsesKeepRules = printUsesKeepRules;
     this.parameters = parameters;
   }
 
@@ -159,16 +159,16 @@
             }
           });
 
-  private String collectKeepRulesWithTraceReferences(
+  private String collectKeepRulesWithPrintUses(
       Path desugaredProgramClassFile, Path desugaredLibraryClassFile) throws Exception {
-    Path generatedKeepRules = temp.newFile().toPath();
-    TraceReferences.run(
-        "--format", "keep",
-        "--lib", ToolHelper.getAndroidJar(AndroidApiLevel.P).toString(),
-        "--target", desugaredLibraryClassFile.toString(),
-        "--source", desugaredProgramClassFile.toString(),
-        "--output", generatedKeepRules.toString());
-    return FileUtils.readTextFile(generatedKeepRules, Charsets.UTF_8);
+    Path printUsesKeepRules = temp.newFile().toPath();
+    PrintUses.main(
+        "--keeprules",
+        ToolHelper.getAndroidJar(AndroidApiLevel.P).toString(),
+        desugaredLibraryClassFile.toString(),
+        desugaredProgramClassFile.toString(),
+        printUsesKeepRules.toString());
+    return FileUtils.readTextFile(printUsesKeepRules, Charsets.UTF_8);
   }
 
   private String desugaredLibraryKeepRules(
@@ -178,10 +178,9 @@
     if (shrinkDesugaredLibrary) {
       desugaredLibraryKeepRules = keepRuleConsumer.get();
       if (desugaredLibraryKeepRules != null) {
-        if (traceReferencesKeepRules) {
+        if (printUsesKeepRules) {
           desugaredLibraryKeepRules =
-              collectKeepRulesWithTraceReferences(
-                  programSupplier.get(), desugaredLibraryClassFile.get());
+              collectKeepRulesWithPrintUses(programSupplier.get(), desugaredLibraryClassFile.get());
         }
       }
     }
@@ -190,7 +189,7 @@
 
   @Test
   public void testTimeD8Cf() throws Exception {
-    Assume.assumeTrue(shrinkDesugaredLibrary || !traceReferencesKeepRules);
+    Assume.assumeTrue(shrinkDesugaredLibrary || !printUsesKeepRules);
 
     KeepRuleConsumer keepRuleConsumer = createKeepRuleConsumer(parameters);
     // Use D8 to desugar with Java classfile output.
@@ -204,7 +203,7 @@
             .writeToZip();
 
     String desugaredLibraryKeepRules;
-    if (shrinkDesugaredLibrary && !traceReferencesKeepRules && keepRuleConsumer.get() != null) {
+    if (shrinkDesugaredLibrary && !printUsesKeepRules && keepRuleConsumer.get() != null) {
       // Collection keep rules is only implemented in the DEX writer.
       assertEquals(0, keepRuleConsumer.get().length());
       desugaredLibraryKeepRules = "-keep class * { *; }";
@@ -240,7 +239,7 @@
   @Test
   public void testTimeD8() throws Exception {
     Assume.assumeTrue(parameters.getRuntime().isDex());
-    Assume.assumeTrue(shrinkDesugaredLibrary || !traceReferencesKeepRules);
+    Assume.assumeTrue(shrinkDesugaredLibrary || !printUsesKeepRules);
 
     KeepRuleConsumer keepRuleConsumer = createKeepRuleConsumer(parameters);
     TestCompileResult<?, ?> result =
@@ -263,7 +262,7 @@
   @Test
   public void testTimeR8() throws Exception {
     Assume.assumeTrue(parameters.getRuntime().isDex());
-    Assume.assumeTrue(shrinkDesugaredLibrary || !traceReferencesKeepRules);
+    Assume.assumeTrue(shrinkDesugaredLibrary || !printUsesKeepRules);
 
     KeepRuleConsumer keepRuleConsumer = createKeepRuleConsumer(parameters);
     TestCompileResult<?, ?> result =