[Retrace] Disambiguate stack traces by putting <OR> on the same line
Change-Id: I0a0bafadc6864db6900cc1809e21416ebd423a39
diff --git a/src/main/java/com/android/tools/r8/retrace/StringRetrace.java b/src/main/java/com/android/tools/r8/retrace/StringRetrace.java
index 0296d71..ff5b970 100644
--- a/src/main/java/com/android/tools/r8/retrace/StringRetrace.java
+++ b/src/main/java/com/android/tools/r8/retrace/StringRetrace.java
@@ -10,6 +10,7 @@
import com.android.tools.r8.Keep;
import com.android.tools.r8.retrace.internal.StackTraceElementStringProxy;
import com.android.tools.r8.utils.ListUtils;
+import com.android.tools.r8.utils.StringUtils;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
@@ -78,21 +79,27 @@
List<String> retracedStrings = new ArrayList<>();
List<List<String>> retracedStackTraces =
removeDuplicateStackTraces(retraceStackTrace(stackTrace));
- if (retracedStackTraces.size() > 1) {
- retracedStrings.add(
- "There are "
- + retracedStackTraces.size()
- + " ambiguous stack traces."
- + (isVerbose ? "" : " Use --verbose to have all listed."));
+ if (retracedStackTraces.size() > 1 && isVerbose) {
+ retracedStrings.add("There are " + retracedStackTraces.size() + " ambiguous stack traces.");
}
for (int i = 0; i < retracedStackTraces.size(); i++) {
- if (i > 0) {
- retracedStrings.add("< OR >");
+ List<String> result = retracedStackTraces.get(i);
+ if (i > 0 && !result.isEmpty()) {
+ // We are reporting an ambiguous frame. To support retracing tools that retrace line by line
+ // we have to emit <OR> at the point of the first ' at ' if we can find it.
+ String firstLine = result.get(0);
+ int indexToInsertOr = firstLine.indexOf(" at ");
+ boolean hasSpace = indexToInsertOr >= 0;
+ if (indexToInsertOr < 0) {
+ indexToInsertOr = Math.max(StringUtils.firstNonWhitespaceCharacter(firstLine), 0);
+ }
+ result.set(
+ 0,
+ firstLine.substring(0, indexToInsertOr)
+ + (hasSpace ? "<OR>" : "<OR> ")
+ + firstLine.substring(indexToInsertOr));
}
- retracedStrings.addAll(retracedStackTraces.get(i));
- if (!isVerbose) {
- break;
- }
+ retracedStrings.addAll(result);
}
return retracedStrings;
}
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 5ce9e89..3facf5f 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
@@ -47,8 +47,7 @@
+ " main(java.lang.String[])(Main.java)",
"\tat com.android.tools.r8.naming.retrace.Main.com.android.Foo"
+ " main(java.lang.String[],com.android.Bar)(Main.java)",
- "< OR >",
- "Exception in thread \"main\" java.lang.NullPointerException",
+ "<OR> 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.void main(com.android.Bar)(Main.java)",
"\tat com.android.tools.r8.naming.retrace.Main.com.android.Foo"
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 3442711..484fb5f 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
@@ -25,13 +25,61 @@
@Override
public List<String> retracedStackTrace() {
return Arrays.asList(
- "There are 8 ambiguous stack traces. Use --verbose to have all listed.",
"com.android.tools.r8.CompilationException: foo[parens](Source:3)",
" at com.android.tools.r8.R8.bar(R8.java:7)",
" at com.android.tools.r8.R8.bar(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.bar(R8.java:9)",
+ " ... 42 more",
+ "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
+ " at com.android.tools.r8.R8.bar(R8.java:7)",
+ " at com.android.tools.r8.R8.bar(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.foo(R8.java:9)",
+ " ... 42 more",
+ "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
+ " at com.android.tools.r8.R8.bar(R8.java:7)",
+ " at com.android.tools.r8.R8.foo(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.bar(R8.java:9)",
+ " ... 42 more",
+ "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
+ " at com.android.tools.r8.R8.bar(R8.java:7)",
+ " at com.android.tools.r8.R8.foo(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.foo(R8.java:9)",
+ " ... 42 more",
+ "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
+ " at com.android.tools.r8.R8.foo(R8.java:7)",
+ " at com.android.tools.r8.R8.bar(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.bar(R8.java:9)",
+ " ... 42 more",
+ "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
+ " at com.android.tools.r8.R8.foo(R8.java:7)",
+ " at com.android.tools.r8.R8.bar(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.foo(R8.java:9)",
+ " ... 42 more",
+ "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
+ " at com.android.tools.r8.R8.foo(R8.java:7)",
+ " at com.android.tools.r8.R8.foo(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.bar(R8.java:9)",
+ " ... 42 more",
+ "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
+ " at com.android.tools.r8.R8.foo(R8.java:7)",
+ " at com.android.tools.r8.R8.foo(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.foo(R8.java:9)",
" ... 42 more");
}
@@ -46,56 +94,49 @@
"Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
" at com.android.tools.r8.R8.void bar(int,int)(R8.java:9)",
" ... 42 more",
- "< OR >",
- "com.android.tools.r8.CompilationException: foo[parens](Source:3)",
+ "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
" at com.android.tools.r8.R8.void bar(int,int)(R8.java:7)",
" at com.android.tools.r8.R8.void bar(int,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 foo(int)(R8.java:9)",
" ... 42 more",
- "< OR >",
- "com.android.tools.r8.CompilationException: foo[parens](Source:3)",
+ "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
" at com.android.tools.r8.R8.void bar(int,int)(R8.java:7)",
" 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)",
" ... 42 more",
- "< OR >",
- "com.android.tools.r8.CompilationException: foo[parens](Source:3)",
+ "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
" at com.android.tools.r8.R8.void bar(int,int)(R8.java:7)",
" 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 foo(int)(R8.java:9)",
" ... 42 more",
- "< OR >",
- "com.android.tools.r8.CompilationException: foo[parens](Source:3)",
+ "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
" 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)",
" 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)",
" ... 42 more",
- "< OR >",
- "com.android.tools.r8.CompilationException: foo[parens](Source:3)",
+ "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
" 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)",
" 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 foo(int)(R8.java:9)",
" ... 42 more",
- "< OR >",
- "com.android.tools.r8.CompilationException: foo[parens](Source:3)",
+ "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
" at com.android.tools.r8.R8.void foo(int)(R8.java:7)",
" 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)",
" ... 42 more",
- "< OR >",
- "com.android.tools.r8.CompilationException: foo[parens](Source:3)",
+ "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
" at com.android.tools.r8.R8.void foo(int)(R8.java:7)",
" at com.android.tools.r8.R8.void foo(int)(R8.java:8)",
" at com.android.tools.r8.R8.main(Unknown Source)",
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 989868f..f6704a4 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
@@ -25,13 +25,61 @@
@Override
public List<String> retracedStackTrace() {
return Arrays.asList(
- "There are 8 ambiguous stack traces. Use --verbose to have all listed.",
"com.android.tools.r8.CompilationException: foo[parens](Source:3)",
" at com.android.tools.r8.R8.bar(R8.java)",
" at com.android.tools.r8.R8.bar(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.bar(R8.java)",
+ " ... 42 more",
+ "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
+ " at com.android.tools.r8.R8.bar(R8.java)",
+ " at com.android.tools.r8.R8.bar(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.foo(R8.java)",
+ " ... 42 more",
+ "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
+ " at com.android.tools.r8.R8.bar(R8.java)",
+ " at com.android.tools.r8.R8.foo(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.bar(R8.java)",
+ " ... 42 more",
+ "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
+ " at com.android.tools.r8.R8.bar(R8.java)",
+ " at com.android.tools.r8.R8.foo(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.foo(R8.java)",
+ " ... 42 more",
+ "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
+ " at com.android.tools.r8.R8.foo(R8.java)",
+ " at com.android.tools.r8.R8.bar(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.bar(R8.java)",
+ " ... 42 more",
+ "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
+ " at com.android.tools.r8.R8.foo(R8.java)",
+ " at com.android.tools.r8.R8.bar(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.foo(R8.java)",
+ " ... 42 more",
+ "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
+ " at com.android.tools.r8.R8.foo(R8.java)",
+ " at com.android.tools.r8.R8.foo(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.bar(R8.java)",
+ " ... 42 more",
+ "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
+ " at com.android.tools.r8.R8.foo(R8.java)",
+ " at com.android.tools.r8.R8.foo(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.foo(R8.java)",
" ... 42 more");
}
@@ -46,56 +94,49 @@
"Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
" at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
" ... 42 more",
- "< OR >",
- "com.android.tools.r8.CompilationException: foo[parens](Source:3)",
+ "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
" at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
" at com.android.tools.r8.R8.void bar(int,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 foo(int)(R8.java)",
" ... 42 more",
- "< OR >",
- "com.android.tools.r8.CompilationException: foo[parens](Source:3)",
+ "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
" at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
" 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)",
" ... 42 more",
- "< OR >",
- "com.android.tools.r8.CompilationException: foo[parens](Source:3)",
+ "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
" at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
" 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 foo(int)(R8.java)",
" ... 42 more",
- "< OR >",
- "com.android.tools.r8.CompilationException: foo[parens](Source:3)",
+ "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
" at com.android.tools.r8.R8.void foo(int)(R8.java)",
" at com.android.tools.r8.R8.void bar(int,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)",
" ... 42 more",
- "< OR >",
- "com.android.tools.r8.CompilationException: foo[parens](Source:3)",
+ "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
" at com.android.tools.r8.R8.void foo(int)(R8.java)",
" at com.android.tools.r8.R8.void bar(int,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 foo(int)(R8.java)",
" ... 42 more",
- "< OR >",
- "com.android.tools.r8.CompilationException: foo[parens](Source:3)",
+ "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
" at com.android.tools.r8.R8.void foo(int)(R8.java)",
" 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)",
" ... 42 more",
- "< OR >",
- "com.android.tools.r8.CompilationException: foo[parens](Source:3)",
+ "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
" at com.android.tools.r8.R8.void foo(int)(R8.java)",
" at com.android.tools.r8.R8.void foo(int)(R8.java)",
" at com.android.tools.r8.R8.main(Unknown Source)",
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 97f2162..7c0c0c2 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
@@ -43,16 +43,13 @@
"java.lang.IndexOutOfBoundsException",
"\tat java.util.ArrayList.get(ArrayList.java:411)",
"\tat com.android.tools.r8.Internal.boolean foo(int,int)(Internal.java)",
- "< OR >",
- "java.lang.IndexOutOfBoundsException",
+ "<OR> java.lang.IndexOutOfBoundsException",
"\tat java.util.ArrayList.get(ArrayList.java:411)",
"\tat com.android.tools.r8.Internal.void foo(int)(Internal.java)",
- "< OR >",
- "java.lang.IndexOutOfBoundsException",
+ "<OR> java.lang.IndexOutOfBoundsException",
"\tat java.util.ArrayList.get(ArrayList.java:411)",
"\tat com.android.tools.r8.Internal.void foo(int,boolean)(Internal.java)",
- "< OR >",
- "java.lang.IndexOutOfBoundsException",
+ "<OR> java.lang.IndexOutOfBoundsException",
"\tat java.util.ArrayList.get(ArrayList.java:411)",
"\tat com.android.tools.r8.Internal.void foo(int,int)(Internal.java)");
}
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 23991fb..a00b7bf 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
@@ -43,16 +43,13 @@
"java.lang.IndexOutOfBoundsException",
"\tat java.util.ArrayList.get(ArrayList.java:411)",
"\tat com.android.tools.r8.Internal.boolean foo(int,int)(Internal.java)",
- "< OR >",
- "java.lang.IndexOutOfBoundsException",
+ "<OR> java.lang.IndexOutOfBoundsException",
"\tat java.util.ArrayList.get(ArrayList.java:411)",
"\tat com.android.tools.r8.Internal.void foo(int)(Internal.java)",
- "< OR >",
- "java.lang.IndexOutOfBoundsException",
+ "<OR> java.lang.IndexOutOfBoundsException",
"\tat java.util.ArrayList.get(ArrayList.java:411)",
"\tat com.android.tools.r8.Internal.void foo(int,boolean)(Internal.java)",
- "< OR >",
- "java.lang.IndexOutOfBoundsException",
+ "<OR> java.lang.IndexOutOfBoundsException",
"\tat java.util.ArrayList.get(ArrayList.java:411)",
"\tat com.android.tools.r8.Internal.void foo(int,int)(Internal.java)");
}
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 004b7d5..6df2b28 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
@@ -29,8 +29,10 @@
@Override
public List<String> retracedStackTrace() {
return Arrays.asList(
- "There are 2 ambiguous stack traces. Use --verbose to have all listed.",
"Exception in thread \"main\" java.lang.NullPointerException",
+ "\tat com.android.tools.r8.naming.retrace.Main.main(Main.java)",
+ "<OR> Exception in thread \"main\" java.lang.NullPointerException",
+ "\tat com.android.tools.r8.naming.retrace.Main.method1(Main.java)",
"\tat com.android.tools.r8.naming.retrace.Main.main(Main.java)");
}
@@ -40,8 +42,7 @@
"There are 2 ambiguous stack traces.",
"Exception in thread \"main\" java.lang.NullPointerException",
"\tat com.android.tools.r8.naming.retrace.Main.void main(java.lang.String[])(Main.java)",
- "< OR >",
- "Exception in thread \"main\" java.lang.NullPointerException",
+ "<OR> Exception in thread \"main\" java.lang.NullPointerException",
"\tat com.android.tools.r8.naming.retrace.Main.void method1(java.lang.String)(Main.java)",
"\tat com.android.tools.r8.naming.retrace.Main.void main(java.lang.String[])(Main.java)");
}
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 858c06b..2e57740 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
@@ -35,11 +35,25 @@
@Override
public List<String> retracedStackTrace() {
return Arrays.asList(
- "There are 4 ambiguous stack traces. Use --verbose to have all listed.",
"Exception in thread \"main\" java.lang.NullPointerException",
"\tat com.android.tools.r8.naming.retrace.Main.main(Main.java:3)",
"\tat com.android.tools.r8.naming.retrace.Main.overload1(Main.java:7)",
"\tat com.android.tools.r8.naming.retrace.Main.definedOverload(Main.java:7)",
+ "\tat com.android.tools.r8.naming.retrace.Main.mainPC(Main.java:42)",
+ "<OR> Exception in thread \"main\" java.lang.NullPointerException",
+ "\tat com.android.tools.r8.naming.retrace.Main.main(Main.java:3)",
+ "\tat com.android.tools.r8.naming.retrace.Main.overload1(Main.java:7)",
+ "\tat com.android.tools.r8.naming.retrace.Main.definedOverload(Main.java:11)",
+ "\tat com.android.tools.r8.naming.retrace.Main.mainPC(Main.java:42)",
+ "<OR> Exception in thread \"main\" java.lang.NullPointerException",
+ "\tat com.android.tools.r8.naming.retrace.Main.main(Main.java:3)",
+ "\tat com.android.tools.r8.naming.retrace.Main.overload2(Main.java:11)",
+ "\tat com.android.tools.r8.naming.retrace.Main.definedOverload(Main.java:7)",
+ "\tat com.android.tools.r8.naming.retrace.Main.mainPC(Main.java:42)",
+ "<OR> Exception in thread \"main\" java.lang.NullPointerException",
+ "\tat com.android.tools.r8.naming.retrace.Main.main(Main.java:3)",
+ "\tat com.android.tools.r8.naming.retrace.Main.overload2(Main.java:11)",
+ "\tat com.android.tools.r8.naming.retrace.Main.definedOverload(Main.java:11)",
"\tat com.android.tools.r8.naming.retrace.Main.mainPC(Main.java:42)");
}
@@ -53,24 +67,21 @@
"\tat com.android.tools.r8.naming.retrace.Main.void definedOverload()(Main.java:7)",
"\tat com.android.tools.r8.naming.retrace.Main.void"
+ " mainPC(java.lang.String[])(Main.java:42)",
- "< OR >",
- "Exception in thread \"main\" java.lang.NullPointerException",
+ "<OR> 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)",
"\tat 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)",
- "< OR >",
- "Exception in thread \"main\" java.lang.NullPointerException",
+ "<OR> 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"
+ " overload2(java.lang.String)(Main.java:11)",
"\tat com.android.tools.r8.naming.retrace.Main.void definedOverload()(Main.java:7)",
"\tat com.android.tools.r8.naming.retrace.Main.void"
+ " mainPC(java.lang.String[])(Main.java:42)",
- "< OR >",
- "Exception in thread \"main\" java.lang.NullPointerException",
+ "<OR> 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"
+ " overload2(java.lang.String)(Main.java:11)",
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 c5fe164..277e4b3 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
@@ -29,9 +29,12 @@
@Override
public List<String> retracedStackTrace() {
return Arrays.asList(
- "There are 3 ambiguous stack traces. Use --verbose to have all listed.",
"Exception in thread \"main\" java.lang.NullPointerException",
- "\tat com.android.tools.r8.naming.retrace.Main.overload(Main.java:7)");
+ "\tat com.android.tools.r8.naming.retrace.Main.overload(Main.java:7)",
+ "<OR> Exception in thread \"main\" java.lang.NullPointerException",
+ "\tat com.android.tools.r8.naming.retrace.Main.overload(Main.java:15)",
+ "<OR> Exception in thread \"main\" java.lang.NullPointerException",
+ "\tat com.android.tools.r8.naming.retrace.Main.overload(Main.java:13)");
}
@Override
@@ -40,11 +43,9 @@
"There are 3 ambiguous stack traces.",
"Exception in thread \"main\" java.lang.NullPointerException",
"\tat com.android.tools.r8.naming.retrace.Main.void overload()(Main.java:7)",
- "< OR >",
- "Exception in thread \"main\" java.lang.NullPointerException",
+ "<OR> Exception in thread \"main\" java.lang.NullPointerException",
"\tat com.android.tools.r8.naming.retrace.Main.void overload(int)(Main.java:15)",
- "< OR >",
- "Exception in thread \"main\" java.lang.NullPointerException",
+ "<OR> Exception in thread \"main\" java.lang.NullPointerException",
"\tat com.android.tools.r8.naming.retrace.Main.void"
+ " overload(java.lang.String)(Main.java:13)");
}
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 120cd8e..8f6e183 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
@@ -36,13 +36,19 @@
@Override
public List<String> retracedStackTrace() {
return Arrays.asList(
- "There are 2 ambiguous stack traces. Use --verbose to have all listed.",
"Exception in thread \"main\" java.lang.NullPointerException",
"\tat com.android.tools.r8.naming.retrace.Main.method1(Main.java:42)",
"\tat com.android.tools.r8.naming.retrace.Main.main(Main.java:28)",
"\tat com.android.tools.r8.naming.retrace.Main.method2(Main.java:42)",
"\tat com.android.tools.r8.naming.retrace.Main.main2(Main.java:29)",
"\tat com.android.tools.r8.naming.retrace.Main.main3(Main.java:30)",
+ "\tat com.android.tools.r8.naming.retrace.Main.main4(Main.java:153)",
+ "<OR> Exception in thread \"main\" java.lang.NullPointerException",
+ "\tat com.android.tools.r8.naming.retrace.Main.method1(Main.java:42)",
+ "\tat com.android.tools.r8.naming.retrace.Main.main(Main.java:28)",
+ "\tat com.android.tools.r8.naming.retrace.Main.method2(Main.java:42)",
+ "\tat com.android.tools.r8.naming.retrace.Main.main2(Main.java:29)",
+ "\tat com.android.tools.r8.naming.retrace.Main.method3(Main.java:72)",
"\tat com.android.tools.r8.naming.retrace.Main.main4(Main.java:153)");
}
@@ -62,8 +68,7 @@
+ " main3(java.lang.String[])(Main.java:30)",
"\tat com.android.tools.r8.naming.retrace.Main.void"
+ " main4(java.lang.String[])(Main.java:153)",
- "< OR >",
- "Exception in thread \"main\" java.lang.NullPointerException",
+ "<OR> 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)",
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 2f946f8..3697b0c 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
@@ -25,13 +25,61 @@
@Override
public List<String> retracedStackTrace() {
return Arrays.asList(
- "There are 8 ambiguous stack traces. Use --verbose to have all listed.",
"com.android.tools.r8.CompilationException: foo[parens](Source:3)",
" at com.android.tools.r8.R8.bar(R8.java)",
" at com.android.tools.r8.R8.bar(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.bar(R8.java)",
+ " ... 42 more",
+ "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
+ " at com.android.tools.r8.R8.bar(R8.java)",
+ " at com.android.tools.r8.R8.bar(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.foo(R8.java)",
+ " ... 42 more",
+ "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
+ " at com.android.tools.r8.R8.bar(R8.java)",
+ " at com.android.tools.r8.R8.foo(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.bar(R8.java)",
+ " ... 42 more",
+ "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
+ " at com.android.tools.r8.R8.bar(R8.java)",
+ " at com.android.tools.r8.R8.foo(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.foo(R8.java)",
+ " ... 42 more",
+ "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
+ " at com.android.tools.r8.R8.foo(R8.java)",
+ " at com.android.tools.r8.R8.bar(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.bar(R8.java)",
+ " ... 42 more",
+ "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
+ " at com.android.tools.r8.R8.foo(R8.java)",
+ " at com.android.tools.r8.R8.bar(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.foo(R8.java)",
+ " ... 42 more",
+ "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
+ " at com.android.tools.r8.R8.foo(R8.java)",
+ " at com.android.tools.r8.R8.foo(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.bar(R8.java)",
+ " ... 42 more",
+ "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
+ " at com.android.tools.r8.R8.foo(R8.java)",
+ " at com.android.tools.r8.R8.foo(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.foo(R8.java)",
" ... 42 more");
}
@@ -46,56 +94,49 @@
"Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
" at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
" ... 42 more",
- "< OR >",
- "com.android.tools.r8.CompilationException: foo[parens](Source:3)",
+ "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
" at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
" at com.android.tools.r8.R8.void bar(int,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 foo(int)(R8.java)",
" ... 42 more",
- "< OR >",
- "com.android.tools.r8.CompilationException: foo[parens](Source:3)",
+ "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
" at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
" 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)",
" ... 42 more",
- "< OR >",
- "com.android.tools.r8.CompilationException: foo[parens](Source:3)",
+ "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
" at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
" 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 foo(int)(R8.java)",
" ... 42 more",
- "< OR >",
- "com.android.tools.r8.CompilationException: foo[parens](Source:3)",
+ "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
" at com.android.tools.r8.R8.void foo(int)(R8.java)",
" at com.android.tools.r8.R8.void bar(int,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)",
" ... 42 more",
- "< OR >",
- "com.android.tools.r8.CompilationException: foo[parens](Source:3)",
+ "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
" at com.android.tools.r8.R8.void foo(int)(R8.java)",
" at com.android.tools.r8.R8.void bar(int,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 foo(int)(R8.java)",
" ... 42 more",
- "< OR >",
- "com.android.tools.r8.CompilationException: foo[parens](Source:3)",
+ "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
" at com.android.tools.r8.R8.void foo(int)(R8.java)",
" 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)",
" ... 42 more",
- "< OR >",
- "com.android.tools.r8.CompilationException: foo[parens](Source:3)",
+ "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
" at com.android.tools.r8.R8.void foo(int)(R8.java)",
" at com.android.tools.r8.R8.void foo(int)(R8.java)",
" at com.android.tools.r8.R8.main(Unknown Source)",