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 =