Merge "Add debugging output to retrace test"
diff --git a/src/test/java/com/android/tools/r8/naming/retrace/DesugarLambdaRetraceTest.java b/src/test/java/com/android/tools/r8/naming/retrace/DesugarLambdaRetraceTest.java
index 1868940..378d3c1 100644
--- a/src/test/java/com/android/tools/r8/naming/retrace/DesugarLambdaRetraceTest.java
+++ b/src/test/java/com/android/tools/r8/naming/retrace/DesugarLambdaRetraceTest.java
@@ -54,8 +54,31 @@
         (StackTrace actualStackTrace, StackTrace retracedStackTrace) -> {
           // Even when SourceFile is present retrace replaces the file name in the stack trace.
           if (backend == Backend.CF) {
+            // TODO(122440196): Additional code to locate issue.
+            if (isSameExceptForFileName(expectedStackTrace).matches(retracedStackTrace)) {
+              System.out.println("Expected original:");
+              System.out.println(expectedStackTrace.getOriginalStderr());
+              System.out.println("Actual original:");
+              System.out.println(retracedStackTrace.getOriginalStderr());
+              System.out.println("Parsed original:");
+              System.out.println(expectedStackTrace);
+              System.out.println("Parsed retraced:");
+              System.out.println(retracedStackTrace);
+            }
             assertThat(retracedStackTrace, isSameExceptForFileName(expectedStackTrace));
           } else {
+            // TODO(122440196): Additional code to locate issue.
+            if (isSameExceptForFileName(expectedStackTrace)
+                .matches(retracedStackTrace.filter(line -> !isSynthesizedLambdaFrame(line)))) {
+              System.out.println("Expected original:");
+              System.out.println(expectedStackTrace.getOriginalStderr());
+              System.out.println("Actual original:");
+              System.out.println(retracedStackTrace.getOriginalStderr());
+              System.out.println("Parsed original:");
+              System.out.println(expectedStackTrace);
+              System.out.println("Parsed retraced:");
+              System.out.println(retracedStackTrace);
+            }
             // With the frame from the lambda class filtered out the stack trace is teh same.
             assertThat(
                 retracedStackTrace.filter(line -> !isSynthesizedLambdaFrame(line)),
diff --git a/src/test/java/com/android/tools/r8/naming/retrace/StackTrace.java b/src/test/java/com/android/tools/r8/naming/retrace/StackTrace.java
index 796750b..0ecd3e4 100644
--- a/src/test/java/com/android/tools/r8/naming/retrace/StackTrace.java
+++ b/src/test/java/com/android/tools/r8/naming/retrace/StackTrace.java
@@ -113,10 +113,12 @@
   }
 
   private final List<StackTraceLine> stackTraceLines;
+  private final String originalStderr;
 
-  private StackTrace(List<StackTraceLine> stackTraceLines) {
+  private StackTrace(List<StackTraceLine> stackTraceLines, String originalStderr) {
     assert stackTraceLines.size() > 0;
     this.stackTraceLines = stackTraceLines;
+    this.originalStderr = originalStderr;
   }
 
   public int size() {
@@ -127,6 +129,10 @@
     return stackTraceLines.get(index);
   }
 
+  public String getOriginalStderr() {
+    return originalStderr;
+  }
+
   public static StackTrace extractFromArt(String stderr) {
     List<StackTraceLine> stackTraceLines = new ArrayList<>();
     List<String> stderrLines = StringUtils.splitLines(stderr);
@@ -165,15 +171,18 @@
     for (int i = first; i < last; i++) {
       stackTraceLines.add(StackTraceLine.parse(stderrLines.get(i)));
     }
-    return new StackTrace(stackTraceLines);
+    return new StackTrace(stackTraceLines, stderr);
+  }
+
+  private static List<StackTraceLine> internalExtractFromJvm(String stderr) {
+    return StringUtils.splitLines(stderr).stream()
+        .filter(s -> s.startsWith(TAB_AT_PREFIX))
+        .map(StackTraceLine::parse)
+        .collect(Collectors.toList());
   }
 
   public static StackTrace extractFromJvm(String stderr) {
-    return new StackTrace(
-        StringUtils.splitLines(stderr).stream()
-            .filter(s -> s.startsWith(TAB_AT_PREFIX))
-            .map(StackTraceLine::parse)
-            .collect(Collectors.toList()));
+    return new StackTrace(internalExtractFromJvm(stderr), stderr);
   }
 
   public static StackTrace extractFromJvm(TestRunResult result) {
@@ -188,11 +197,15 @@
     FileUtils.writeTextFile(
         stackTraceFile,
         stackTraceLines.stream().map(line -> line.originalLine).collect(Collectors.toList()));
-    return StackTrace.extractFromJvm(ToolHelper.runRetrace(mapFile, stackTraceFile));
+    // Keep the original stderr in the retraced stacktrace.
+    return new StackTrace(
+        internalExtractFromJvm(ToolHelper.runRetrace(mapFile, stackTraceFile)), originalStderr);
   }
 
   public StackTrace filter(Predicate<StackTraceLine> filter) {
-    return new StackTrace(stackTraceLines.stream().filter(filter).collect(Collectors.toList()));
+    return new StackTrace(
+        stackTraceLines.stream().filter(filter).collect(Collectors.toList()),
+        originalStderr);
   }
 
   @Override