[Retrace] Add test for ambiguous inline reporting

Bug: b/281468612
Change-Id: I6338302a97e1e774ead0814848d9adafb94c8caa
diff --git a/src/test/java/com/android/tools/r8/retrace/RetraceTests.java b/src/test/java/com/android/tools/r8/retrace/RetraceTests.java
index d06cbe6..9f82884 100644
--- a/src/test/java/com/android/tools/r8/retrace/RetraceTests.java
+++ b/src/test/java/com/android/tools/r8/retrace/RetraceTests.java
@@ -23,6 +23,7 @@
 import com.android.tools.r8.retrace.stacktraces.ActualBotStackTraceBase;
 import com.android.tools.r8.retrace.stacktraces.ActualIdentityStackTrace;
 import com.android.tools.r8.retrace.stacktraces.ActualRetraceBotStackTrace;
+import com.android.tools.r8.retrace.stacktraces.AmbiguousInlineFramesStackTrace;
 import com.android.tools.r8.retrace.stacktraces.AmbiguousMethodVerboseStackTrace;
 import com.android.tools.r8.retrace.stacktraces.AmbiguousMissingLineStackTrace;
 import com.android.tools.r8.retrace.stacktraces.AmbiguousStackTrace;
@@ -215,6 +216,11 @@
   }
 
   @Test
+  public void testAmbiguousInlineFramesStackTrace() throws Exception {
+    runRetraceTest(new AmbiguousInlineFramesStackTrace());
+  }
+
+  @Test
   public void testAmbiguousMissingLineStackTrace() throws Exception {
     runRetraceTest(new AmbiguousMissingLineStackTrace());
   }
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousInlineFramesStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousInlineFramesStackTrace.java
new file mode 100644
index 0000000..52b0063
--- /dev/null
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousInlineFramesStackTrace.java
@@ -0,0 +1,64 @@
+// Copyright (c) 2023, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+package com.android.tools.r8.retrace.stacktraces;
+
+import com.android.tools.r8.utils.StringUtils;
+import java.util.Arrays;
+import java.util.List;
+
+public class AmbiguousInlineFramesStackTrace implements StackTraceForTest {
+
+  @Override
+  public List<String> obfuscatedStackTrace() {
+    return Arrays.asList(
+        "com.android.tools.r8.CompilationException:", "    at a.a.a(Unknown Source:1)");
+  }
+
+  @Override
+  public List<String> retracedStackTrace() {
+    // TODO(b/281468612): Change ambiguous reporting to only report <OR> on the inner most frame.
+    return Arrays.asList(
+        "com.android.tools.r8.CompilationException:",
+        "    at com.android.tools.r8.R8.foo(R8.java:42)",
+        "    at com.android.tools.r8.R8.bar(R8.java:32)",
+        "    at com.android.tools.r8.R8.baz(R8.java:10)",
+        "    <OR> at com.android.tools.r8.R8.foo(R8.java:43)",
+        "    at com.android.tools.r8.R8.bar(R8.java:32)",
+        "    at com.android.tools.r8.R8.baz(R8.java:10)",
+        "    <OR> at com.android.tools.r8.R8.foo(R8.java:44)",
+        "    at com.android.tools.r8.R8.bar(R8.java:32)",
+        "    at com.android.tools.r8.R8.baz(R8.java:10)");
+  }
+
+  @Override
+  public List<String> retraceVerboseStackTrace() {
+    // TODO(b/281468612): Change ambiguous reporting to only report <OR> on the inner most frame.
+    return Arrays.asList(
+        "com.android.tools.r8.CompilationException:",
+        "    at com.android.tools.r8.R8.void foo(int)(R8.java:42)",
+        "    at com.android.tools.r8.R8.void bar(int,int)(R8.java:32)",
+        "    at com.android.tools.r8.R8.void baz(int,int)(R8.java:10)",
+        "    <OR> at com.android.tools.r8.R8.void foo(int)(R8.java:43)",
+        "    at com.android.tools.r8.R8.void bar(int,int)(R8.java:32)",
+        "    at com.android.tools.r8.R8.void baz(int,int)(R8.java:10)",
+        "    <OR> at com.android.tools.r8.R8.void foo(int)(R8.java:44)",
+        "    at com.android.tools.r8.R8.void bar(int,int)(R8.java:32)",
+        "    at com.android.tools.r8.R8.void baz(int,int)(R8.java:10)");
+  }
+
+  @Override
+  public String mapping() {
+    return StringUtils.lines(
+        "com.android.tools.r8.R8 -> a.a:",
+        "  1:1:void foo(int):42:44 -> a",
+        "  1:1:void bar(int, int):32 -> a",
+        "  1:1:void baz(int, int):10 -> a");
+  }
+
+  @Override
+  public int expectedWarnings() {
+    return 0;
+  }
+}