[Retrace] Support verbose for new stack-trace parser
Bug: 170293906
Change-Id: I98c09a5e47c3bea456d6aa5607ec4b551e3e844d
diff --git a/src/main/java/com/android/tools/r8/retrace/Retrace.java b/src/main/java/com/android/tools/r8/retrace/Retrace.java
index 9b838df..e64d8e0 100644
--- a/src/main/java/com/android/tools/r8/retrace/Retrace.java
+++ b/src/main/java/com/android/tools/r8/retrace/Retrace.java
@@ -195,7 +195,9 @@
retracedElement.getOriginalItem();
retracedStringsForElement.add(
originalItem.toRetracedItem(
- retracedElement, !retracedStringsForElement.isEmpty()));
+ retracedElement,
+ !retracedStringsForElement.isEmpty(),
+ command.isVerbose));
});
retracedStrings.addAll(retracedStringsForElement);
});
diff --git a/src/main/java/com/android/tools/r8/retrace/internal/StackTraceElementStringProxy.java b/src/main/java/com/android/tools/r8/retrace/internal/StackTraceElementStringProxy.java
index 202d297..15d62ad 100644
--- a/src/main/java/com/android/tools/r8/retrace/internal/StackTraceElementStringProxy.java
+++ b/src/main/java/com/android/tools/r8/retrace/internal/StackTraceElementStringProxy.java
@@ -5,13 +5,14 @@
package com.android.tools.r8.retrace.internal;
import static com.android.tools.r8.retrace.internal.PlainStackTraceVisitor.firstNonWhiteSpaceCharacterFromIndex;
+import static com.android.tools.r8.retrace.internal.RetraceUtils.methodDescriptionFromRetraceMethod;
import static com.android.tools.r8.retrace.internal.StackTraceElementStringProxy.StringIndex.noIndex;
import com.android.tools.r8.retrace.StackTraceElementProxy;
import com.android.tools.r8.retrace.internal.StackTraceElementProxyRetracerImpl.RetraceStackTraceProxyImpl;
+import com.android.tools.r8.utils.TriFunction;
import java.util.ArrayList;
import java.util.List;
-import java.util.function.BiFunction;
public final class StackTraceElementStringProxy extends StackTraceElementProxy<String> {
@@ -90,7 +91,8 @@
public String toRetracedItem(
RetraceStackTraceProxyImpl<StackTraceElementStringProxy> retracedProxy,
- boolean printAmbiguous) {
+ boolean printAmbiguous,
+ boolean verbose) {
StringBuilder sb = new StringBuilder();
int lastSeenIndex = 0;
if (retracedProxy.isAmbiguous() && printAmbiguous) {
@@ -100,7 +102,7 @@
}
for (StringIndex index : orderedIndices) {
sb.append(line, lastSeenIndex, index.startIndex);
- sb.append(index.retracedString.apply(retracedProxy, this));
+ sb.append(index.retracedString.apply(retracedProxy, this, verbose));
lastSeenIndex = index.endIndex;
}
sb.append(line, lastSeenIndex, line.length());
@@ -136,7 +138,7 @@
new StringIndex(
startIndex,
endIndex,
- (retraced, original) -> {
+ (retraced, original, verbose) -> {
assert retraced.hasRetracedClass();
return retraced.getRetracedClass().getTypeName();
});
@@ -149,10 +151,13 @@
new StringIndex(
startIndex,
endIndex,
- (retraced, original) ->
- retraced.hasRetracedMethod()
- ? retraced.getRetracedMethod().getMethodName()
- : original.methodName());
+ (retraced, original, verbose) -> {
+ if (!retraced.hasRetracedMethod()) {
+ return original.methodName();
+ }
+ return methodDescriptionFromRetraceMethod(
+ retraced.getRetracedMethod(), false, verbose);
+ });
orderedIndices.add(methodName);
return this;
}
@@ -162,7 +167,7 @@
new StringIndex(
startIndex,
endIndex,
- (retraced, original) ->
+ (retraced, original, verbose) ->
retraced.hasSourceFile() ? retraced.getSourceFile() : original.fileName());
orderedIndices.add(sourceFile);
return this;
@@ -173,7 +178,7 @@
new StringIndex(
startIndex,
endIndex,
- (retraced, original) ->
+ (retraced, original, verbose) ->
retraced.hasLineNumber()
? retraced.getLineNumber() + ""
: original.lineNumberAsString());
@@ -204,18 +209,20 @@
private final int startIndex;
private final int endIndex;
- private final BiFunction<
+ private final TriFunction<
RetraceStackTraceProxyImpl<StackTraceElementStringProxy>,
StackTraceElementStringProxy,
+ Boolean,
String>
retracedString;
private StringIndex(
int startIndex,
int endIndex,
- BiFunction<
+ TriFunction<
RetraceStackTraceProxyImpl<StackTraceElementStringProxy>,
StackTraceElementStringProxy,
+ Boolean,
String>
retracedString) {
this.startIndex = startIndex;
diff --git a/src/test/java/com/android/tools/r8/retrace/RetraceVerboseTests.java b/src/test/java/com/android/tools/r8/retrace/RetraceVerboseTests.java
index 3e5b4ca..fb65c1d 100644
--- a/src/test/java/com/android/tools/r8/retrace/RetraceVerboseTests.java
+++ b/src/test/java/com/android/tools/r8/retrace/RetraceVerboseTests.java
@@ -6,7 +6,6 @@
import static com.android.tools.r8.retrace.Retrace.DEFAULT_REGULAR_EXPRESSION;
import static junit.framework.TestCase.assertEquals;
-import static org.junit.Assume.assumeTrue;
import com.android.tools.r8.TestBase;
import com.android.tools.r8.TestDiagnosticMessagesImpl;
@@ -58,8 +57,6 @@
}
private TestDiagnosticMessagesImpl runRetraceTest(StackTraceForTest stackTraceForTest) {
- // TODO(b/170293906): Remove assumption.
- assumeTrue(useRegExpParsing);
TestDiagnosticMessagesImpl diagnosticsHandler = new TestDiagnosticMessagesImpl();
RetraceCommand retraceCommand =
RetraceCommand.builder(diagnosticsHandler)