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)