Reland "Split on tab for retrace lines after update to proguard retrace"
This reverts commit f6f099e283e693a34a6bb6af1963c17c4ec343f7.
Bug: b/295302135
Change-Id: Id103fca0c1fcfa125c6593ce02683f94adeaafb8
diff --git a/src/test/java/com/android/tools/r8/naming/retraceproguard/StackTrace.java b/src/test/java/com/android/tools/r8/naming/retraceproguard/StackTrace.java
index 7e65d56..bc6a07e 100644
--- a/src/test/java/com/android/tools/r8/naming/retraceproguard/StackTrace.java
+++ b/src/test/java/com/android/tools/r8/naming/retraceproguard/StackTrace.java
@@ -192,6 +192,20 @@
private static List<StackTraceLine> internalExtractFromJvm(String stderr) {
return StringUtils.splitLines(stderr).stream()
.filter(s -> s.startsWith(TAB_AT_PREFIX))
+ .flatMap(
+ s -> {
+ // Proguard Retrace can emit lines with multiple retraced inline frames. See
+ // b/295305981.
+ List<String> resultMap = new ArrayList<>();
+ String current = s;
+ int nextIndex;
+ while ((nextIndex = current.indexOf(TAB_AT_PREFIX, 2)) > 2) {
+ resultMap.add(current.substring(0, nextIndex));
+ current = current.substring(nextIndex);
+ }
+ resultMap.add(current);
+ return resultMap.stream();
+ })
.map(StackTraceLine::parse)
.collect(Collectors.toList());
}
@@ -220,8 +234,7 @@
}
public StackTrace retrace(String map, Path tempFolder) throws IOException {
- // TODO(b/295305981): Fails with 7.3.2 for some tests.
- return retrace(ProguardVersion.V7_0_0, map, tempFolder);
+ return retrace(ProguardVersion.getLatest(), map, tempFolder);
}
public StackTrace retrace(ProguardVersion proguardVersion, String map, Path tempFolder)