[Retrace] Extend all retrace tests with verbose output
Change-Id: Ic6fdc424d03e73e0c8033d617d39b9d5d33028db
diff --git a/src/test/java/com/android/tools/r8/internal/retrace/RetraceTests.java b/src/test/java/com/android/tools/r8/internal/retrace/RetraceTests.java
index 441fd68..d283ee6 100644
--- a/src/test/java/com/android/tools/r8/internal/retrace/RetraceTests.java
+++ b/src/test/java/com/android/tools/r8/internal/retrace/RetraceTests.java
@@ -88,6 +88,11 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return null;
+ }
+
+ @Override
public int expectedWarnings() {
return 0;
}
@@ -123,6 +128,11 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return null;
+ }
+
+ @Override
public int expectedWarnings() {
return 0;
}
@@ -162,6 +172,11 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return null;
+ }
+
+ @Override
public int expectedWarnings() {
return 0;
}
diff --git a/src/test/java/com/android/tools/r8/internal/retrace/stacktraces/RetraceInternalStackTraceForTest.java b/src/test/java/com/android/tools/r8/internal/retrace/stacktraces/RetraceInternalStackTraceForTest.java
index e4005de..978e33a 100644
--- a/src/test/java/com/android/tools/r8/internal/retrace/stacktraces/RetraceInternalStackTraceForTest.java
+++ b/src/test/java/com/android/tools/r8/internal/retrace/stacktraces/RetraceInternalStackTraceForTest.java
@@ -57,6 +57,11 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ throw new RuntimeException("Do not test");
+ }
+
+ @Override
public int expectedWarnings() {
return 0;
}
diff --git a/src/test/java/com/android/tools/r8/retrace/RetraceTests.java b/src/test/java/com/android/tools/r8/retrace/RetraceTests.java
index 8cc0883..50e8e34 100644
--- a/src/test/java/com/android/tools/r8/retrace/RetraceTests.java
+++ b/src/test/java/com/android/tools/r8/retrace/RetraceTests.java
@@ -19,14 +19,17 @@
import com.android.tools.r8.retrace.stacktraces.ActualBotStackTraceBase;
import com.android.tools.r8.retrace.stacktraces.ActualIdentityStackTrace;
import com.android.tools.r8.retrace.stacktraces.ActualRetraceBotStackTrace;
+import com.android.tools.r8.retrace.stacktraces.AmbiguousMethodVerboseStackTrace;
import com.android.tools.r8.retrace.stacktraces.AmbiguousMissingLineStackTrace;
import com.android.tools.r8.retrace.stacktraces.AmbiguousStackTrace;
import com.android.tools.r8.retrace.stacktraces.AmbiguousWithMultipleLineMappingsStackTrace;
import com.android.tools.r8.retrace.stacktraces.AmbiguousWithSignatureNonVerboseStackTrace;
+import com.android.tools.r8.retrace.stacktraces.AmbiguousWithSignatureVerboseStackTrace;
import com.android.tools.r8.retrace.stacktraces.AutoStackTrace;
import com.android.tools.r8.retrace.stacktraces.CircularReferenceStackTrace;
import com.android.tools.r8.retrace.stacktraces.ColonInFileNameStackTrace;
import com.android.tools.r8.retrace.stacktraces.FileNameExtensionStackTrace;
+import com.android.tools.r8.retrace.stacktraces.FoundMethodVerboseStackTrace;
import com.android.tools.r8.retrace.stacktraces.InlineFileNameStackTrace;
import com.android.tools.r8.retrace.stacktraces.InlineFileNameWithInnerClassesStackTrace;
import com.android.tools.r8.retrace.stacktraces.InlineNoLineNumberStackTrace;
@@ -53,6 +56,7 @@
import com.android.tools.r8.retrace.stacktraces.SyntheticLambdaMethodWithInliningStackTrace;
import com.android.tools.r8.retrace.stacktraces.UnicodeInFileNameStackTrace;
import com.android.tools.r8.retrace.stacktraces.UnknownSourceStackTrace;
+import com.android.tools.r8.retrace.stacktraces.VerboseUnknownStackTrace;
import com.android.tools.r8.utils.BooleanUtils;
import com.android.tools.r8.utils.StringUtils;
import com.google.common.collect.ImmutableList;
@@ -71,17 +75,20 @@
@RunWith(Parameterized.class)
public class RetraceTests extends TestBase {
- @Parameters(name = "{0}, external: {1}")
+ @Parameters(name = "{0}, external: {1}, verbose: {2}")
public static Collection<Object[]> data() {
- return buildParameters(getTestParameters().withCfRuntimes().build(), BooleanUtils.values());
+ return buildParameters(
+ getTestParameters().withCfRuntimes().build(), BooleanUtils.values(), BooleanUtils.values());
}
private final TestParameters testParameters;
private final boolean external;
+ private final boolean verbose;
- public RetraceTests(TestParameters parameters, boolean external) {
+ public RetraceTests(TestParameters parameters, boolean external, boolean verbose) {
this.testParameters = parameters;
this.external = external;
+ this.verbose = verbose;
}
@Test
@@ -282,6 +289,27 @@
runRetraceTest(new MultipleLinesNoLineNumberStackTrace());
}
+ @Test
+ public void testFoundMethod() throws Exception {
+ runRetraceTest(new FoundMethodVerboseStackTrace());
+ }
+
+ @Test
+ public void testUnknownMethod() throws Exception {
+ runRetraceTest(new AmbiguousMethodVerboseStackTrace());
+ }
+
+ @Test
+ public void testVerboseUnknownMethod() throws Exception {
+ runRetraceTest(new VerboseUnknownStackTrace());
+ }
+
+ @Test
+ public void testAmbiguousMissingLineVerbose() throws Exception {
+ assumeTrue("b/169346455", false);
+ runRetraceTest(new AmbiguousWithSignatureVerboseStackTrace());
+ }
+
private void inspectRetraceTest(
StackTraceForTest stackTraceForTest, Consumer<Retracer> inspection) {
inspection.accept(
@@ -302,6 +330,11 @@
private TestDiagnosticMessagesImpl runRetraceTest(
StackTraceForTest stackTraceForTest, boolean allowExperimentalMapping) throws Exception {
+ String expectedStackTrace =
+ StringUtils.joinLines(
+ verbose
+ ? stackTraceForTest.retraceVerboseStackTrace()
+ : stackTraceForTest.retracedStackTrace());
if (external) {
assumeTrue(testParameters.isCfRuntime());
// The external dependency is built on top of R8Lib. If test.py is run with
@@ -327,13 +360,13 @@
command.add("com.android.tools.r8.retrace.Retrace");
command.add(mappingFile.toString());
command.add(stackTraceFile.toString());
+ if (verbose) {
+ command.add("-verbose");
+ }
command.add("-quiet");
ProcessBuilder builder = new ProcessBuilder(command);
ProcessResult processResult = ToolHelper.runProcess(builder);
- assertEquals(
- StringUtils.joinLines(stackTraceForTest.retracedStackTrace())
- + StringUtils.LINE_SEPARATOR,
- processResult.stdout);
+ assertEquals(expectedStackTrace + StringUtils.LINE_SEPARATOR, processResult.stdout);
// TODO(b/177204438): Parse diagnostics from stdErr
return new TestDiagnosticMessagesImpl();
} else {
@@ -343,10 +376,8 @@
.setProguardMapProducer(ProguardMapProducer.fromString(stackTraceForTest.mapping()))
.setStackTrace(stackTraceForTest.obfuscatedStackTrace())
.setRetracedStackTraceConsumer(
- retraced ->
- assertEquals(
- StringUtils.joinLines(stackTraceForTest.retracedStackTrace()),
- StringUtils.joinLines(retraced)))
+ retraced -> assertEquals(expectedStackTrace, StringUtils.joinLines(retraced)))
+ .setVerbose(verbose)
.build();
Retrace.runForTesting(retraceCommand, allowExperimentalMapping);
return diagnosticsHandler;
diff --git a/src/test/java/com/android/tools/r8/retrace/RetraceVerboseTests.java b/src/test/java/com/android/tools/r8/retrace/RetraceVerboseTests.java
deleted file mode 100644
index 8f8e049..0000000
--- a/src/test/java/com/android/tools/r8/retrace/RetraceVerboseTests.java
+++ /dev/null
@@ -1,67 +0,0 @@
-// Copyright (c) 2019, 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.retrace;
-
-import static junit.framework.TestCase.assertEquals;
-import static org.junit.Assume.assumeTrue;
-
-import com.android.tools.r8.TestBase;
-import com.android.tools.r8.TestDiagnosticMessagesImpl;
-import com.android.tools.r8.TestParameters;
-import com.android.tools.r8.retrace.stacktraces.AmbiguousMethodVerboseStackTrace;
-import com.android.tools.r8.retrace.stacktraces.AmbiguousWithSignatureVerboseStackTrace;
-import com.android.tools.r8.retrace.stacktraces.FoundMethodVerboseStackTrace;
-import com.android.tools.r8.retrace.stacktraces.StackTraceForTest;
-import com.android.tools.r8.retrace.stacktraces.VerboseUnknownStackTrace;
-import java.util.Collection;
-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 RetraceVerboseTests extends TestBase {
-
- @Parameters(name = "{0}")
- public static Collection<Object[]> data() {
- return buildParameters(getTestParameters().withNoneRuntime().build());
- }
-
- public RetraceVerboseTests(TestParameters parameters) {}
-
- @Test
- public void testFoundMethod() {
- runRetraceTest(new FoundMethodVerboseStackTrace());
- }
-
- @Test
- public void testUnknownMethod() {
- runRetraceTest(new AmbiguousMethodVerboseStackTrace());
- }
-
- @Test
- public void testVerboseUnknownMethod() {
- runRetraceTest(new VerboseUnknownStackTrace());
- }
-
- @Test
- public void testAmbiguousMissingLineVerbose() {
- assumeTrue("b/169346455", false);
- runRetraceTest(new AmbiguousWithSignatureVerboseStackTrace());
- }
-
- private void runRetraceTest(StackTraceForTest stackTraceForTest) {
- TestDiagnosticMessagesImpl diagnosticsHandler = new TestDiagnosticMessagesImpl();
- RetraceCommand retraceCommand =
- RetraceCommand.builder(diagnosticsHandler)
- .setProguardMapProducer(ProguardMapProducer.fromString(stackTraceForTest.mapping()))
- .setStackTrace(stackTraceForTest.obfuscatedStackTrace())
- .setVerbose(true)
- .setRetracedStackTraceConsumer(
- retraced -> assertEquals(stackTraceForTest.retracedStackTrace(), retraced))
- .build();
- Retrace.run(retraceCommand);
- }
-}
diff --git a/src/test/java/com/android/tools/r8/retrace/StackTraceRegularExpressionParserTests.java b/src/test/java/com/android/tools/r8/retrace/StackTraceRegularExpressionParserTests.java
index f74fcda..9af1378 100644
--- a/src/test/java/com/android/tools/r8/retrace/StackTraceRegularExpressionParserTests.java
+++ b/src/test/java/com/android/tools/r8/retrace/StackTraceRegularExpressionParserTests.java
@@ -10,10 +10,10 @@
import com.android.tools.r8.TestBase;
import com.android.tools.r8.TestDiagnosticMessagesImpl;
import com.android.tools.r8.TestParameters;
-import com.android.tools.r8.TestParametersCollection;
import com.android.tools.r8.retrace.stacktraces.InlineFileNameStackTrace;
import com.android.tools.r8.retrace.stacktraces.RetraceAssertionErrorStackTrace;
import com.android.tools.r8.retrace.stacktraces.StackTraceForTest;
+import com.android.tools.r8.utils.BooleanUtils;
import com.android.tools.r8.utils.StringUtils;
import com.google.common.collect.ImmutableList;
import java.util.Collections;
@@ -27,13 +27,16 @@
@RunWith(Parameterized.class)
public class StackTraceRegularExpressionParserTests extends TestBase {
- @Parameters(name = "{0}")
- public static TestParametersCollection data() {
- return getTestParameters().withNoneRuntime().build();
+ @Parameters(name = "{0}, verbose: {1}")
+ public static List<Object[]> data() {
+ return buildParameters(getTestParameters().withNoneRuntime().build(), BooleanUtils.values());
}
- public StackTraceRegularExpressionParserTests(TestParameters parameters) {
+ private final boolean verbose;
+
+ public StackTraceRegularExpressionParserTests(TestParameters parameters, boolean verbose) {
parameters.assertNoneRuntime();
+ this.verbose = verbose;
}
@Test
@@ -57,6 +60,11 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return ImmutableList.of("foocom.android.tools.r8.a");
+ }
+
+ @Override
public int expectedWarnings() {
return 0;
}
@@ -86,6 +94,11 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return ImmutableList.of("AA.AA.AA b.b.b c.c.c");
+ }
+
+ @Override
public int expectedWarnings() {
return 0;
}
@@ -114,6 +127,11 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return ImmutableList.of("AA/AA b/b/b c/c/c");
+ }
+
+ @Override
public int expectedWarnings() {
return 0;
}
@@ -141,6 +159,11 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return ImmutableList.of("a.b.c.a");
+ }
+
+ @Override
public int expectedWarnings() {
return 0;
}
@@ -168,6 +191,11 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return ImmutableList.of("com.android.tools.r8.R8.void foo()");
+ }
+
+ @Override
public int expectedWarnings() {
return 0;
}
@@ -195,6 +223,11 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return ImmutableList.of("com.android.tools.r8.R8.a");
+ }
+
+ @Override
public int expectedWarnings() {
return 0;
}
@@ -227,6 +260,11 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return ImmutableList.of("a.b.c.a");
+ }
+
+ @Override
public int expectedWarnings() {
return 0;
}
@@ -254,6 +292,11 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return ImmutableList.of("com.android.tools.r8.R8.int foo");
+ }
+
+ @Override
public int expectedWarnings() {
return 0;
}
@@ -281,6 +324,11 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return ImmutableList.of("com.android.tools.r8.R8.a");
+ }
+
+ @Override
public int expectedWarnings() {
return 0;
}
@@ -303,6 +351,11 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return Collections.singletonList("foo.Bar$Baz.int baz(Bar.java)");
+ }
+
+ @Override
public String mapping() {
return StringUtils.lines(
"com.android.tools.r8.naming.retrace.Main -> a.b.c:",
@@ -337,6 +390,11 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return ImmutableList.of("com.android.tools.r8.R8(R8.java)");
+ }
+
+ @Override
public int expectedWarnings() {
return 0;
}
@@ -364,6 +422,11 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return ImmutableList.of("a.b.d(SourceFile)");
+ }
+
+ @Override
public int expectedWarnings() {
return 0;
}
@@ -392,6 +455,11 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return ImmutableList.of("com.android.tools.r8.R8.boolean foo()(7)");
+ }
+
+ @Override
public int expectedWarnings() {
return 0;
}
@@ -420,6 +488,11 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return ImmutableList.of("com.android.tools.r8.R8.boolean foo()(7)");
+ }
+
+ @Override
public int expectedWarnings() {
return 0;
}
@@ -448,6 +521,11 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return ImmutableList.of("com.android.tools.r8.R8.boolean foo()(42)");
+ }
+
+ @Override
public int expectedWarnings() {
return 0;
}
@@ -475,6 +553,11 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return ImmutableList.of("com.android.tools.r8.R8.boolean foo()(4)");
+ }
+
+ @Override
public int expectedWarnings() {
return 0;
}
@@ -505,6 +588,11 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return ImmutableList.of("com.android.tools.r8.R8.boolean foo()(7)");
+ }
+
+ @Override
public int expectedWarnings() {
return 0;
}
@@ -532,6 +620,11 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return ImmutableList.of("void", "a.a.a[]", "a.a.a[][][]");
+ }
+
+ @Override
public int expectedWarnings() {
return 0;
}
@@ -565,6 +658,15 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ // TODO(b/199919195): Consider not writing full method description.
+ return ImmutableList.of(
+ "void com.android.tools.r8.R8.void foo()",
+ "com.android.tools.r8.D8[] com.android.tools.r8.R8.com.android.tools.r8.D8[]"
+ + " bar()");
+ }
+
+ @Override
public int expectedWarnings() {
return 0;
}
@@ -601,6 +703,13 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return ImmutableList.of(
+ "void com.android.tools.r8.R8.foo",
+ "com.android.tools.r8.D8[] com.android.tools.r8.R8.bar");
+ }
+
+ @Override
public int expectedWarnings() {
return 0;
}
@@ -628,6 +737,11 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return ImmutableList.of("void");
+ }
+
+ @Override
public int expectedWarnings() {
return 0;
}
@@ -659,6 +773,13 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return ImmutableList.of(
+ "com.android.tools.r8.R8.void foo(int,com.android.tools.r8.D8[],boolean)"
+ + "(int,com.android.tools.r8.D8[],boolean)");
+ }
+
+ @Override
public int expectedWarnings() {
return 0;
}
@@ -689,6 +810,11 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return ImmutableList.of("com.android.tools.r8.R8.void foo()()");
+ }
+
+ @Override
public int expectedWarnings() {
return 0;
}
@@ -721,6 +847,11 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return ImmutableList.of("com.android.tools.r8.R8.bar(com.android.tools.r8.D8)");
+ }
+
+ @Override
public int expectedWarnings() {
return 0;
}
@@ -759,6 +890,14 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return ImmutableList.of(
+ "com.android.tools.r8.R8: foo bar baz",
+ " at com.android.tools.r8.Bar.void foo()(Bar.java)",
+ " at com.android.tools.r8.Baz.void bar()(Baz.java)");
+ }
+
+ @Override
public int expectedWarnings() {
return 0;
}
@@ -794,6 +933,11 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return ImmutableList.of("%c\\com.android.tools.r8.Bar\\%c.void m()(\\Bar.java:13)\\%S");
+ }
+
+ @Override
public int expectedWarnings() {
return 0;
}
@@ -809,9 +953,14 @@
.setStackTrace(stackTraceForTest.obfuscatedStackTrace())
.setRetracedStackTraceConsumer(
retraced -> {
- assertEquals(stackTraceForTest.retracedStackTrace(), retraced);
+ assertEquals(
+ verbose
+ ? stackTraceForTest.retraceVerboseStackTrace()
+ : stackTraceForTest.retracedStackTrace(),
+ retraced);
})
.setRegularExpression(regularExpression)
+ .setVerbose(verbose)
.build();
Retrace.run(retraceCommand);
return diagnosticsHandler;
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/ActualIdentityStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/ActualIdentityStackTrace.java
index 9ac7068..1b78928 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/ActualIdentityStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/ActualIdentityStackTrace.java
@@ -55,6 +55,11 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return obfuscatedStackTrace();
+ }
+
+ @Override
public int expectedWarnings() {
return 0;
}
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/ActualRetraceBotStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/ActualRetraceBotStackTrace.java
index 0e38636..8ffd732 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/ActualRetraceBotStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/ActualRetraceBotStackTrace.java
@@ -67,6 +67,38 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return Arrays.asList(
+ "com.android.tools.r8.CompilationFailedException: Compilation failed to complete",
+ "\tat com.android.tools.r8.BaseCommand$Builder."
+ + "com.android.tools.r8.BaseCommand build()(BaseCommand.java:143)",
+ "\tat com.android.tools.r8.R8TestBuilder.internalCompile(R8TestBuilder.java:104)",
+ "\tat com.android.tools.r8.R8TestBuilder.internalCompile(R8TestBuilder.java:29)",
+ "\tat com.android.tools.r8.TestCompilerBuilder.compile(TestCompilerBuilder.java:89)",
+ "\tat com.android.tools.r8.TestCompilerBuilder.run(TestCompilerBuilder.java:113)",
+ "\tat com.android.tools.r8.TestBuilder.run(TestBuilder.java:49)",
+ "\tat com.android.tools.r8.ir.optimize.classinliner.ClassInlinerTest.testCodeSample(ClassInlinerTest.java:289)",
+ "",
+ "Caused by:",
+ "com.android.tools.r8.utils.AbortException: Error: offset: 158, line: 2, column: 33,"
+ + " Unexpected attribute at <no file>:2:33",
+ "-keepattributes -keepattributes LineNumberTable",
+ " ^",
+ "\tat com.android.tools.r8.utils.Reporter.void failIfPendingErrors()(Reporter.java:101)",
+ "\tat com.android.tools.r8.shaking.ProguardConfigurationParser."
+ + "void parse(java.util.List)(ProguardConfigurationParser.java:187)",
+ "\tat com.android.tools.r8.R8Command$Builder."
+ + "com.android.tools.r8.R8Command makeR8Command()(R8Command.java:432)",
+ "\tat com.android.tools.r8.R8Command$Builder."
+ + "com.android.tools.r8.R8Command makeCommand()(R8Command.java:413)",
+ "\tat com.android.tools.r8.R8Command$Builder."
+ + "com.android.tools.r8.BaseCommand makeCommand()(R8Command.java:61)",
+ "\tat com.android.tools.r8.BaseCommand$Builder."
+ + "com.android.tools.r8.BaseCommand build()(BaseCommand.java:139)",
+ "\t... 6 more");
+ }
+
+ @Override
public int expectedWarnings() {
return 0;
}
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/ActualRetraceBotStackTraceWithInfo.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/ActualRetraceBotStackTraceWithInfo.java
index d57b024..ce0441d 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/ActualRetraceBotStackTraceWithInfo.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/ActualRetraceBotStackTraceWithInfo.java
@@ -69,6 +69,32 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return Arrays.asList(
+ "com.android.tools.r8.CompilationFailedException: Compilation failed to complete",
+ "\tat com.android.tools.r8.BaseCommand$Builder.build(BaseCommand.java:143)",
+ "\tat com.android.tools.r8.R8TestBuilder.internalCompile(R8TestBuilder.java:104)",
+ "\tat com.android.tools.r8.R8TestBuilder.internalCompile(R8TestBuilder.java:29)",
+ "\tat com.android.tools.r8.TestCompilerBuilder.compile(TestCompilerBuilder.java:89)",
+ "\tat com.android.tools.r8.TestCompilerBuilder.run(TestCompilerBuilder.java:113)",
+ "\tat com.android.tools.r8.TestBuilder.run(TestBuilder.java:49)",
+ "\tat com.android.tools.r8.ir.optimize.classinliner.ClassInlinerTest.testCodeSample(ClassInlinerTest.java:289)",
+ "",
+ "Caused by:",
+ "com.android.tools.r8.utils.AbortException: Error: offset: 158, line: 2, column: 33,"
+ + " Unexpected attribute at <no file>:2:33",
+ "-keepattributes -keepattributes LineNumberTable",
+ " ^",
+ "\tat com.android.tools.r8.utils.Reporter.failIfPendingErrors(Reporter.java:101)",
+ "\tat com.android.tools.r8.shaking.ProguardConfigurationParser.parse(ProguardConfigurationParser.java:187)",
+ "\tat com.android.tools.r8.R8Command$Builder.makeR8Command(R8Command.java:432)",
+ "\tat com.android.tools.r8.R8Command$Builder.makeCommand(R8Command.java:413)",
+ "\tat com.android.tools.r8.R8Command$Builder.makeCommand(R8Command.java:61)",
+ "\tat com.android.tools.r8.BaseCommand$Builder.build(BaseCommand.java:139)",
+ "\t... 6 more");
+ }
+
+ @Override
public int expectedWarnings() {
return 1;
}
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousMethodVerboseStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousMethodVerboseStackTrace.java
index 3d3a1ee..017a6b8 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousMethodVerboseStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousMethodVerboseStackTrace.java
@@ -33,6 +33,15 @@
return Arrays.asList(
"Exception in thread \"main\" java.lang.NullPointerException",
"\tat com.android.tools.r8.naming.retrace.Main.c(Main.java)",
+ "\tat com.android.tools.r8.naming.retrace.Main.main(Main.java)",
+ "\tat com.android.tools.r8.naming.retrace.Main.main(Main.java)");
+ }
+
+ @Override
+ public List<String> retraceVerboseStackTrace() {
+ return Arrays.asList(
+ "Exception in thread \"main\" java.lang.NullPointerException",
+ "\tat com.android.tools.r8.naming.retrace.Main.c(Main.java)",
"\tat com.android.tools.r8.naming.retrace.Main.com.android.Foo main("
+ "java.lang.String[])(Main.java)",
"\t<OR #1> at com.android.tools.r8.naming.retrace.Main.void main("
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousMissingLineStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousMissingLineStackTrace.java
index 310390c..e3cab8a 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousMissingLineStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousMissingLineStackTrace.java
@@ -38,6 +38,21 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return Arrays.asList(
+ "com.android.tools.r8.CompilationException: foo[parens](Source:3)",
+ " at com.android.tools.r8.R8.void bar(int,int)(R8.java:7)",
+ " <OR #1> at com.android.tools.r8.R8.void foo(int)(R8.java:7)",
+ " at com.android.tools.r8.R8.void bar(int,int)(R8.java:8)",
+ " <OR #1> at com.android.tools.r8.R8.void foo(int)(R8.java:8)",
+ " at com.android.tools.r8.R8.main(Unknown Source)",
+ "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
+ " at com.android.tools.r8.R8.void bar(int,int)(R8.java:9)",
+ " <OR #1> at com.android.tools.r8.R8.void foo(int)(R8.java:9)",
+ " ... 42 more");
+ }
+
+ @Override
public String mapping() {
return StringUtils.lines(
"com.android.tools.r8.R8 -> a.a:", " void foo(int) -> a", " void bar(int, int) -> a");
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousStackTrace.java
index 38fbb08..9692fa2 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousStackTrace.java
@@ -65,6 +65,21 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return Arrays.asList(
+ "com.android.tools.r8.CompilationException: foo[parens](Source:3)",
+ " at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
+ " <OR #1> at com.android.tools.r8.R8.void foo(int)(R8.java)",
+ " at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
+ " <OR #1> at com.android.tools.r8.R8.void foo(int)(R8.java)",
+ " at com.android.tools.r8.R8.main(Unknown Source)",
+ "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
+ " at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
+ " <OR #1> at com.android.tools.r8.R8.void foo(int)(R8.java)",
+ " ... 42 more");
+ }
+
+ @Override
public String mapping() {
return StringUtils.lines(
"com.android.tools.r8.R8 -> a.a:", " void foo(int) -> a", " void bar(int, int) -> a");
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousWithMultipleLineMappingsStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousWithMultipleLineMappingsStackTrace.java
index 4543fab..1041ace 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousWithMultipleLineMappingsStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousWithMultipleLineMappingsStackTrace.java
@@ -36,6 +36,14 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return Arrays.asList(
+ "java.lang.IndexOutOfBoundsException",
+ "\tat java.util.ArrayList.get(ArrayList.java:411)",
+ "\tat com.android.tools.r8.Internal.void foo(int)(Internal.java)");
+ }
+
+ @Override
public int expectedWarnings() {
return 0;
}
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousWithSignatureNonVerboseStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousWithSignatureNonVerboseStackTrace.java
index e4dc987..dbfe5f8 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousWithSignatureNonVerboseStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousWithSignatureNonVerboseStackTrace.java
@@ -37,6 +37,17 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return Arrays.asList(
+ "java.lang.IndexOutOfBoundsException",
+ "\tat java.util.ArrayList.get(ArrayList.java:411)",
+ "\tat com.android.tools.r8.Internal.boolean foo(int,int)(Internal.java)",
+ "\t<OR #1> at com.android.tools.r8.Internal.void foo(int)(Internal.java)",
+ "\t<OR #2> at com.android.tools.r8.Internal.void foo(int,boolean)(Internal.java)",
+ "\t<OR #3> at com.android.tools.r8.Internal.void foo(int,int)(Internal.java)");
+ }
+
+ @Override
public int expectedWarnings() {
return 0;
}
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousWithSignatureVerboseStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousWithSignatureVerboseStackTrace.java
index 45c103f..9c08875 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousWithSignatureVerboseStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousWithSignatureVerboseStackTrace.java
@@ -40,6 +40,17 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return Arrays.asList(
+ "java.lang.IndexOutOfBoundsException",
+ "\tat java.util.ArrayList.get(ArrayList.java:411)",
+ "\tat com.android.tools.r8.Internal.boolean foo(int,int)(Internal.java)",
+ "\t<OR> at com.android.tools.r8.Internal.void foo(int)(Internal.java)",
+ "\t<OR> at com.android.tools.r8.Internal.void foo(int,boolean)(Internal.java)",
+ "\t<OR> at com.android.tools.r8.Internal.void foo(int,int)(Internal.java)");
+ }
+
+ @Override
public int expectedWarnings() {
return 0;
}
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/AutoStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/AutoStackTrace.java
index 0504b58..ab7f261 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/AutoStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/AutoStackTrace.java
@@ -35,6 +35,14 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return ImmutableList.of(
+ "java.io.IOException: INVALID_SENDER",
+ "\tat com.android.tools.r8.AutoTest.void foo(int)(AutoTest.java:200)",
+ "\tat com.android.tools.r8.AutoTest.void foo(int,int)(AutoTest.java:24)");
+ }
+
+ @Override
public int expectedWarnings() {
return 0;
}
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/CircularReferenceStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/CircularReferenceStackTrace.java
index 5df37f8..c0b1977 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/CircularReferenceStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/CircularReferenceStackTrace.java
@@ -43,6 +43,19 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return Arrays.asList(
+ " [CIRCULAR REFERENCE:foo.bar.Baz]",
+ " [CIRCULAR REFERENCE:foo.bar.Qux]",
+ " [CIRCULAR REFERENCE:None.existing.class]",
+ " [CIRCULAR REFERENCE:foo.bar.Baz] ",
+ " [CIRCU:AA]",
+ " [CIRCULAR REFERENCE:A.A",
+ " [CIRCULAR REFERENCE:]",
+ " [CIRCULAR REFERENCE:None existing class]");
+ }
+
+ @Override
public int expectedWarnings() {
return 5;
}
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/ColonInFileNameStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/ColonInFileNameStackTrace.java
index 0bdb870..618b83f 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/ColonInFileNameStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/ColonInFileNameStackTrace.java
@@ -29,6 +29,11 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return ImmutableList.of(" at some.Class.int strawberry(int)(Class.kt:99)");
+ }
+
+ @Override
public int expectedWarnings() {
return 0;
}
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/FileNameExtensionStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/FileNameExtensionStackTrace.java
index dc77ca6..06cc043 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/FileNameExtensionStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/FileNameExtensionStackTrace.java
@@ -52,6 +52,24 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return Arrays.asList(
+ "foo.bar.baz: Problem when compiling program",
+ " at R8.main(R8.java:800)",
+ " at R8.main(Native Method)",
+ " at R8.main(R8.java:)",
+ " at R8.main(R8.kt:1)",
+ " at R8.main(R8.java)",
+ " at R8.main(R8.java)",
+ " at R8.main(R8.java)",
+ " at R8.main(R8.java)",
+ " at R8.main(R8.java:1)",
+ "Suppressed: foo.bar.baz: You have to write the program first",
+ " at R8.retrace(R8.java:184)",
+ " ... 7 more");
+ }
+
+ @Override
public int expectedWarnings() {
return 0;
}
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/FoundMethodVerboseStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/FoundMethodVerboseStackTrace.java
index ce7a8f5..b4812a5 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/FoundMethodVerboseStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/FoundMethodVerboseStackTrace.java
@@ -27,6 +27,13 @@
public List<String> retracedStackTrace() {
return Arrays.asList(
"Exception in thread \"main\" java.lang.NullPointerException",
+ "\tat com.android.tools.r8.naming.retrace.Main.main(Main.java:102)");
+ }
+
+ @Override
+ public List<String> retraceVerboseStackTrace() {
+ return Arrays.asList(
+ "Exception in thread \"main\" java.lang.NullPointerException",
"\tat com.android.tools.r8.naming.retrace.Main.com.android.Foo main(java.lang.String[],"
+ "com.android.Bar)(Main.java:102)");
}
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/InlineFileNameStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/InlineFileNameStackTrace.java
index ef36965..048b941 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/InlineFileNameStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/InlineFileNameStackTrace.java
@@ -28,6 +28,17 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return Arrays.asList(
+ "Exception in thread \"main\" java.lang.NullPointerException",
+ "\tat foo.Bar$Baz.void baz(long)(Bar.java:0)",
+ "\tat Foo$Bar.void bar(int)(Foo.java:2)",
+ "\tat com.android.tools.r8.naming.retrace.Main$Foo"
+ + ".void method1(java.lang.String)(Main.java:8)",
+ "\tat com.android.tools.r8.naming.retrace.Main.void main(java.lang.String[])(Main.java:7)");
+ }
+
+ @Override
public String mapping() {
return StringUtils.lines(
"com.android.tools.r8.naming.retrace.Main -> com.android.tools.r8.naming.retrace.Main:",
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/InlineFileNameWithInnerClassesStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/InlineFileNameWithInnerClassesStackTrace.java
index 8d7551a..177eb8a 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/InlineFileNameWithInnerClassesStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/InlineFileNameWithInnerClassesStackTrace.java
@@ -26,6 +26,14 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return Arrays.asList(
+ "Exception in thread \"main\" java.lang.NullPointerException",
+ "\tat foo.Bar$Baz$Qux.void baz(long)(Bar.java:0)",
+ "\tat com.android.tools.r8.naming.retrace.Main.void main(java.lang.String[])(Main.java:7)");
+ }
+
+ @Override
public String mapping() {
return StringUtils.lines(
"com.android.tools.r8.naming.retrace.Main -> com.android.tools.r8.naming.retrace.Main:",
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/InlineNoLineNumberStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/InlineNoLineNumberStackTrace.java
index dda09dd..763ec80 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/InlineNoLineNumberStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/InlineNoLineNumberStackTrace.java
@@ -28,6 +28,16 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return Arrays.asList(
+ "Exception in thread \"main\" java.lang.NullPointerException",
+ "\tat com.android.tools.r8.naming.retrace.Main.void method3(long)(Main.java:0)",
+ "\tat com.android.tools.r8.naming.retrace.Main.void method2(int)(Main.java:0)",
+ "\tat com.android.tools.r8.naming.retrace.Main.void method1(java.lang.String)(Main.java:0)",
+ "\tat com.android.tools.r8.naming.retrace.Main.void main(java.lang.String[])(Main.java:0)");
+ }
+
+ @Override
public String mapping() {
return StringUtils.lines(
"com.android.tools.r8.naming.retrace.Main -> com.android.tools.r8.naming.retrace.Main:",
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/InlineSourceFileContextStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/InlineSourceFileContextStackTrace.java
index 3c22097..f5943b5 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/InlineSourceFileContextStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/InlineSourceFileContextStackTrace.java
@@ -48,6 +48,17 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return Arrays.asList(
+ " at com.google.appreduce.remapper.KotlinJavaSourceFileTestLibrary"
+ + ".void throwsException()(KotlinJavaSourceFileTestLibrary.kt:22)",
+ " at com.google.appreduce.remapper.KotlinJavaSourceFileTestLibrary"
+ + ".void callsThrowsException()(KotlinJavaSourceFileTestLibrary.kt:19)",
+ " at com.google.appreduce.remapper.KotlinJavaSourceFileTestObject"
+ + ".void main(java.lang.String[])(KotlinJavaSourceFileTestObject.java:32)");
+ }
+
+ @Override
public int expectedWarnings() {
return 0;
}
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/InlineWithLineNumbersStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/InlineWithLineNumbersStackTrace.java
index 59c9693..eb1144e 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/InlineWithLineNumbersStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/InlineWithLineNumbersStackTrace.java
@@ -44,6 +44,18 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return Arrays.asList(
+ "Exception in thread \"main\" java.lang.NullPointerException",
+ "\tat com.android.tools.r8.naming.retrace.Main.void method3(long)(Main.java:81)",
+ "\tat com.android.tools.r8.naming.retrace.Main.void method2(int)(Main.java:88)",
+ "\tat com.android.tools.r8.naming.retrace.Main."
+ + "void method1(java.lang.String)(Main.java:96)",
+ "\tat com.android.tools.r8.naming.retrace.Main."
+ + "void main(java.lang.String[])(Main.java:102)");
+ }
+
+ @Override
public int expectedWarnings() {
return 0;
}
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/InvalidStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/InvalidStackTrace.java
index 87d30d5..737a32a 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/InvalidStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/InvalidStackTrace.java
@@ -35,6 +35,16 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return Arrays.asList(
+ " hulubulu",
+ " XXX, where are you",
+ "foo.bar.baz: Problem when compiling program",
+ " . . . 7 more",
+ " ... 7 more");
+ }
+
+ @Override
public int expectedWarnings() {
return 1;
}
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/MemberFieldOverlapStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/MemberFieldOverlapStackTrace.java
index 9b5ba56..ca6b1c9 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/MemberFieldOverlapStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/MemberFieldOverlapStackTrace.java
@@ -38,6 +38,13 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return Arrays.asList(
+ "Exception in thread \"main\" java.lang.NullPointerException",
+ "\tat foo.Bar.int method()(Bar.java:5)");
+ }
+
+ @Override
public int expectedWarnings() {
return 1;
}
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/MultipleDotsInFileNameStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/MultipleDotsInFileNameStackTrace.java
index a67335f..43ac3ab 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/MultipleDotsInFileNameStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/MultipleDotsInFileNameStackTrace.java
@@ -29,6 +29,11 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return ImmutableList.of(" at some.Class.int strawberry(int)(Class.kt:99)");
+ }
+
+ @Override
public int expectedWarnings() {
return 0;
}
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/MultipleLinesNoLineNumberStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/MultipleLinesNoLineNumberStackTrace.java
index 54ef0bf..5638f88 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/MultipleLinesNoLineNumberStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/MultipleLinesNoLineNumberStackTrace.java
@@ -36,6 +36,17 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return Arrays.asList(
+ "Exception in thread \"main\" java.lang.NullPointerException",
+ "\tat com.android.tools.r8.naming.retrace.Main.void main(java.lang.String[])(Main.java)",
+ "\t<OR #1> at com.android.tools.r8.naming.retrace.Main."
+ + "void method1(java.lang.String)(Main.java)",
+ "\t<OR #1> at com.android.tools.r8.naming.retrace.Main."
+ + "void main(java.lang.String[])(Main.java)");
+ }
+
+ @Override
public int expectedWarnings() {
return 0;
}
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/NamedModuleStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/NamedModuleStackTrace.java
index 8bd402f..1866585 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/NamedModuleStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/NamedModuleStackTrace.java
@@ -50,6 +50,17 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return Arrays.asList(
+ "SomeFakeException: this is a fake exception",
+ "\tat com.android.tools.r8.Classloader/named_module@9.0/com.android.tools.r8.Main.main(Main.java:1)",
+ "\tat com.android.tools.r8.Classloader//com.android.tools.r8.Main.foo(Main.java:2)",
+ "\tat named_module@2.1/com.android.tools.r8.Main.bar(Main.java:3)",
+ "\tat named_module/com.android.tools.r8.Main.baz(Main.java:4)",
+ "\tat com.android.tools.r8.Main.qux(Main.java:5)");
+ }
+
+ @Override
public int expectedWarnings() {
return 0;
}
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/NoObfuscatedLineNumberWithOverrideTest.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/NoObfuscatedLineNumberWithOverrideTest.java
index 23c5652..b8c106b 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/NoObfuscatedLineNumberWithOverrideTest.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/NoObfuscatedLineNumberWithOverrideTest.java
@@ -45,6 +45,21 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return Arrays.asList(
+ "Exception in thread \"main\" java.lang.NullPointerException",
+ "\tat com.android.tools.r8.naming.retrace.Main.void main(java.lang.String)(Main.java:3)",
+ "\tat com.android.tools.r8.naming.retrace.Main.void overload1()(Main.java:7)",
+ "\t<OR #1> at com.android.tools.r8.naming.retrace.Main."
+ + "void overload2(java.lang.String)(Main.java:11)",
+ "\tat com.android.tools.r8.naming.retrace.Main.void definedOverload()(Main.java:7)",
+ "\t<OR #1> at com.android.tools.r8.naming.retrace.Main."
+ + "void definedOverload(java.lang.String)(Main.java:11)",
+ "\tat com.android.tools.r8.naming.retrace.Main."
+ + "void mainPC(java.lang.String[])(Main.java:42)");
+ }
+
+ @Override
public int expectedWarnings() {
return 0;
}
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/NoObfuscationRangeMappingWithStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/NoObfuscationRangeMappingWithStackTrace.java
index 3f944e2..579541f 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/NoObfuscationRangeMappingWithStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/NoObfuscationRangeMappingWithStackTrace.java
@@ -31,6 +31,16 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return Arrays.asList(
+ "Exception in thread \"main\" java.lang.NullPointerException",
+ "\tat com.android.tools.r8.naming.retrace.Main.void foo(long)(Main.java:1)",
+ "\tat com.android.tools.r8.naming.retrace.Main.void bar(int)(Main.java:3)",
+ "\tat com.android.tools.r8.naming.retrace.Main.void baz()(Main.java:8)",
+ "\tat com.android.tools.r8.naming.retrace.Main.void main(java.lang.String[])(Main.java:7)");
+ }
+
+ @Override
public String mapping() {
return StringUtils.lines(
"com.android.tools.r8.naming.retrace.Main -> foo:",
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/NullStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/NullStackTrace.java
index 99aa584..9cd0c45 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/NullStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/NullStackTrace.java
@@ -34,6 +34,12 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ fail();
+ return null;
+ }
+
+ @Override
public int expectedWarnings() {
return 0;
}
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/ObfucatedExceptionClassStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/ObfucatedExceptionClassStackTrace.java
index 707874d..de7673b 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/ObfucatedExceptionClassStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/ObfucatedExceptionClassStackTrace.java
@@ -35,6 +35,16 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return Arrays.asList(
+ "foo.bar.baz: Problem when compiling program",
+ " at r8.main(App:800)",
+ "Caused by: foo.bar.baz: You have to write the program first",
+ " at r8.retrace(App:184)",
+ " ... 7 more");
+ }
+
+ @Override
public int expectedWarnings() {
return 0;
}
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/ObfuscatedRangeToSingleLineStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/ObfuscatedRangeToSingleLineStackTrace.java
index 1579756..e87126f 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/ObfuscatedRangeToSingleLineStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/ObfuscatedRangeToSingleLineStackTrace.java
@@ -40,6 +40,16 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return Arrays.asList(
+ "UnknownException: This is just a fake exception",
+ " at foo.bar.Baz.void qux()(Baz.java:27)",
+ " at foo.bar.Baz.void qux()(Baz.java:42)",
+ " at foo.bar.Baz.void quux()(Baz.java:113)",
+ " at foo.bar.Baz.void quuz()(Baz.java:72)");
+ }
+
+ @Override
public int expectedWarnings() {
return 0;
}
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/OverloadSameLineTest.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/OverloadSameLineTest.java
index f1fbedb..ccd73f3 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/OverloadSameLineTest.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/OverloadSameLineTest.java
@@ -30,13 +30,22 @@
public List<String> retracedStackTrace() {
return Arrays.asList(
"Exception in thread \"main\" java.lang.NullPointerException",
- // TODO(b/199058242): Should be ambiguous and not inline frames
"\tat com.android.tools.r8.naming.retrace.Main.overload(Main.java:7)",
"\t<OR #1> at com.android.tools.r8.naming.retrace.Main.overload(Main.java:15)",
"\t<OR #2> at com.android.tools.r8.naming.retrace.Main.overload(Main.java:13)");
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return Arrays.asList(
+ "Exception in thread \"main\" java.lang.NullPointerException",
+ "\tat com.android.tools.r8.naming.retrace.Main.void overload()(Main.java:7)",
+ "\t<OR #1> at com.android.tools.r8.naming.retrace.Main.void overload(int)(Main.java:15)",
+ "\t<OR #2> at com.android.tools.r8.naming.retrace.Main."
+ + "void overload(java.lang.String)(Main.java:13)");
+ }
+
+ @Override
public int expectedWarnings() {
return 0;
}
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/PGStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/PGStackTrace.java
index 8698ac9..2a3a63a 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/PGStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/PGStackTrace.java
@@ -45,6 +45,19 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return Arrays.asList(
+ "09-16 15:43:01.249 23316 23316 E AndroidRuntime: java.lang.NullPointerException: Attempt"
+ + " to invoke virtual method 'boolean"
+ + " com.google.android.foo(com.google.android.foo.Data$Key)' on a null object"
+ + " reference",
+ "09-16 15:43:01.249 23316 23316 E AndroidRuntime: at"
+ + " com.google.apps.sectionheader.SectionHeaderListController.onToolbarStateChanged(SectionHeaderListController.java:586)",
+ "09-16 15:43:01.249 23316 23316 E AndroidRuntime: at"
+ + " com.google.apps.Controller.onToolbarStateChanged(Controller.java:1087)");
+ }
+
+ @Override
public int expectedWarnings() {
return 0;
}
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/RetraceAssertionErrorStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/RetraceAssertionErrorStackTrace.java
index d6bcacc..11d2669 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/RetraceAssertionErrorStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/RetraceAssertionErrorStackTrace.java
@@ -36,6 +36,23 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return Arrays.asList(
+ "java.lang.AssertionError",
+ " at com.android.tools.r8.retrace.RetraceCore$StackTraceNode."
+ + "void <init>(java.util.List)(RetraceCore.java:31)",
+ " at com.android.tools.r8.retrace.RetraceCore."
+ + "void retraceLine(java.util.List,int,java.util.List)(RetraceCore.java:117)",
+ " at com.android.tools.r8.retrace.RetraceCore."
+ + "com.android.tools.r8.retrace."
+ + "RetraceCore$RetraceResult retrace()(RetraceCore.java:107)",
+ " at com.android.tools.r8.retrace.Retrace."
+ + "void run(com.android.tools.r8.retrace.RetraceCommand)(Retrace.java:116)",
+ " at com.android.tools.r8.retrace.RetraceTests."
+ + "testNullLineTrace(RetraceTests.java:73)");
+ }
+
+ @Override
public String mapping() {
return StringUtils.lines(
"com.android.tools.r8.retrace.Retrace -> com.android.tools.r8.retrace.Retrace:",
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/SingleLineNoLineNumberStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/SingleLineNoLineNumberStackTrace.java
index 0b0c7ef..770b2f8 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/SingleLineNoLineNumberStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/SingleLineNoLineNumberStackTrace.java
@@ -47,6 +47,25 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return Arrays.asList(
+ "Exception in thread \"main\" java.lang.NullPointerException",
+ "\tat com.android.tools.r8.naming.retrace.Main."
+ + "void method1(java.lang.String)(Main.java:42)",
+ "\tat com.android.tools.r8.naming.retrace.Main.void main(java.lang.String[])(Main.java:28)",
+ "\tat com.android.tools.r8.naming.retrace.Main."
+ + "void method2(java.lang.String)(Main.java:42)",
+ "\tat com.android.tools.r8.naming.retrace.Main."
+ + "void main2(java.lang.String[])(Main.java:29)",
+ "\tat com.android.tools.r8.naming.retrace.Main."
+ + "void main3(java.lang.String[])(Main.java:30)",
+ "\t<OR #1> at com.android.tools.r8.naming.retrace.Main."
+ + "void method3(java.lang.String)(Main.java:72)",
+ "\tat com.android.tools.r8.naming.retrace.Main."
+ + "void main4(java.lang.String[])(Main.java:153)");
+ }
+
+ @Override
public int expectedWarnings() {
return 0;
}
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/SourceFileNameSynthesizeStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/SourceFileNameSynthesizeStackTrace.java
index 0315fc0..9e15a2d 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/SourceFileNameSynthesizeStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/SourceFileNameSynthesizeStackTrace.java
@@ -36,6 +36,14 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return Arrays.asList(
+ "\tat android.support.v7.widget.ActionMenuView.void invokeItem()(ActionMenuView.java:624)",
+ "\tat noMappingKt.noMapping(AW779999992:21)",
+ "\tat android.support.v7.widget.ActionMenuViewKt.void invokeItem()(ActionMenuView.kt:624)");
+ }
+
+ @Override
public int expectedWarnings() {
return 0;
}
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/SourceFileWithNumberAndEmptyStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/SourceFileWithNumberAndEmptyStackTrace.java
index 1522918..fd20517 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/SourceFileWithNumberAndEmptyStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/SourceFileWithNumberAndEmptyStackTrace.java
@@ -39,6 +39,23 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return Arrays.asList(
+ " at com.android.tools.r8.utils.ExceptionUtils.void withR8CompilationHandler("
+ + "com.android.tools.r8.utils.Reporter,"
+ + "com.android.tools.r8.utils.ExceptionUtils$CompileAction)(ExceptionUtils.java:59)",
+ " at com.android.tools.r8.R8.void runForTesting("
+ + "com.android.tools.r8.utils.AndroidApp,"
+ + "com.android.tools.r8.utils.InternalOptions)(R8.java:261)",
+ " at com.android.tools.r8.utils.ExceptionUtils.void withR8CompilationHandler("
+ + "com.android.tools.r8.utils.Reporter,"
+ + "com.android.tools.r8.utils.ExceptionUtils$CompileAction)(ExceptionUtils.java:59)",
+ " at com.android.tools.r8.R8.void runForTesting("
+ + "com.android.tools.r8.utils.AndroidApp,"
+ + "com.android.tools.r8.utils.InternalOptions)(R8.java:261)");
+ }
+
+ @Override
public int expectedWarnings() {
return 0;
}
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/StackTraceForTest.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/StackTraceForTest.java
index e9783e6..29baca3 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/StackTraceForTest.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/StackTraceForTest.java
@@ -14,5 +14,7 @@
List<String> retracedStackTrace();
+ List<String> retraceVerboseStackTrace();
+
int expectedWarnings();
}
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/SuppressedStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/SuppressedStackTrace.java
index eb44d96..e0cd74c 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/SuppressedStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/SuppressedStackTrace.java
@@ -35,6 +35,16 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return Arrays.asList(
+ "foo.bar.baz: Problem when compiling program",
+ " at r8.main(App:800)",
+ "Suppressed: foo.bar.baz: You have to write the program first",
+ " at r8.retrace(App:184)",
+ " ... 7 more");
+ }
+
+ @Override
public int expectedWarnings() {
return 0;
}
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/SyntheticLambdaMethodStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/SyntheticLambdaMethodStackTrace.java
index 793fc0c..6beaba4 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/SyntheticLambdaMethodStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/SyntheticLambdaMethodStackTrace.java
@@ -32,6 +32,16 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return Arrays.asList(
+ "Exception in thread \"main\" java.lang.NullPointerException",
+ " at example.Foo.void lambda$main$0()(Foo.java:225)",
+ " at example.Foo.void runIt()(Foo.java:218)",
+ " at example.Foo.void main()(Foo.java:223)",
+ " at example.Main.void main(java.lang.String[])(Main.java:123)");
+ }
+
+ @Override
public String mapping() {
return StringUtils.lines(
"# {'id':'com.android.tools.r8.mapping','version':'experimental'}",
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/SyntheticLambdaMethodWithInliningStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/SyntheticLambdaMethodWithInliningStackTrace.java
index c132733..201700d 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/SyntheticLambdaMethodWithInliningStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/SyntheticLambdaMethodWithInliningStackTrace.java
@@ -31,6 +31,16 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return Arrays.asList(
+ "Exception in thread \"main\" java.lang.NullPointerException",
+ " at example.Foo.void lambda$main$0()(Foo.java:225)",
+ " at example.Foo.void runIt()(Foo.java:218)",
+ " at example.Foo.void main()(Foo.java:223)",
+ " at example.Main.void main(java.lang.String[])(Main.java:123)");
+ }
+
+ @Override
public String mapping() {
return StringUtils.lines(
"# {'id':'com.android.tools.r8.mapping','version':'experimental'}",
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/UnicodeInFileNameStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/UnicodeInFileNameStackTrace.java
index 5090c39..1b3c0eb 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/UnicodeInFileNameStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/UnicodeInFileNameStackTrace.java
@@ -29,6 +29,11 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return ImmutableList.of(" at some.Class.int strawberry(int)(Class.kt:99)");
+ }
+
+ @Override
public int expectedWarnings() {
return 0;
}
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/UnknownSourceStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/UnknownSourceStackTrace.java
index 13b8bdd..e6481ac 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/UnknownSourceStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/UnknownSourceStackTrace.java
@@ -38,6 +38,21 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return Arrays.asList(
+ "com.android.tools.r8.CompilationException: foo[parens](Source:3)",
+ " at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
+ " <OR #1> at com.android.tools.r8.R8.void foo(int)(R8.java)",
+ " at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
+ " <OR #1> at com.android.tools.r8.R8.void foo(int)(R8.java)",
+ " at com.android.tools.r8.R8.main(Unknown Source)",
+ "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
+ " at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
+ " <OR #1> at com.android.tools.r8.R8.void foo(int)(R8.java)",
+ " ... 42 more");
+ }
+
+ @Override
public String mapping() {
return StringUtils.lines(
"com.android.tools.r8.R8 -> a.a:", " void foo(int) -> a", " void bar(int, int) -> a");
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/VerboseUnknownStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/VerboseUnknownStackTrace.java
index 3cb6808..24e773c 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/VerboseUnknownStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/VerboseUnknownStackTrace.java
@@ -27,6 +27,12 @@
}
@Override
+ public List<String> retraceVerboseStackTrace() {
+ return Arrays.asList(
+ "java.lang.IndexOutOfBoundsException", "\tat java.util.ArrayList.get(ArrayList.java:411)");
+ }
+
+ @Override
public int expectedWarnings() {
return 0;
}