[Retrace] Add stack trace test for ambiguous inline frames
Change-Id: Ie3aa567da92579244f0899f513965931525a057c
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 3644aa8..3c5aa5b 100644
--- a/src/test/java/com/android/tools/r8/retrace/RetraceTests.java
+++ b/src/test/java/com/android/tools/r8/retrace/RetraceTests.java
@@ -26,6 +26,7 @@
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.AmbiguousMultipleInlineStackTrace;
import com.android.tools.r8.retrace.stacktraces.AmbiguousStackTrace;
import com.android.tools.r8.retrace.stacktraces.AmbiguousWithMultipleLineMappingsStackTrace;
import com.android.tools.r8.retrace.stacktraces.AmbiguousWithSignatureStackTrace;
@@ -232,6 +233,11 @@
}
@Test
+ public void testAmbiguousMultipleInlineStackTrace() throws Exception {
+ runRetraceTest(new AmbiguousMultipleInlineStackTrace());
+ }
+
+ @Test
public void testAmbiguousMultipleMappingsTest() throws Exception {
runRetraceTest(new AmbiguousWithMultipleLineMappingsStackTrace());
}
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousMultipleInlineStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousMultipleInlineStackTrace.java
new file mode 100644
index 0000000..abf5ba6
--- /dev/null
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousMultipleInlineStackTrace.java
@@ -0,0 +1,55 @@
+// 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 AmbiguousMultipleInlineStackTrace implements StackTraceForTest {
+
+ @Override
+ public List<String> obfuscatedStackTrace() {
+ return Arrays.asList(
+ "java.lang.IndexOutOfBoundsException",
+ "\tat com.android.tools.r8.Internal.zza(SourceFile:10)");
+ }
+
+ @Override
+ public String mapping() {
+ return StringUtils.lines(
+ "com.android.tools.r8.Internal -> com.android.tools.r8.Internal:",
+ " 10:10:void some.inlinee1(int):10:10 -> zza",
+ " 10:10:void foo(int):10 -> zza",
+ " 11:12:void foo(int):11:12 -> zza",
+ " 10:10:void some.inlinee2(int, int):20:20 -> zza",
+ " 10:10:void foo(int, int):42 -> zza");
+ }
+
+ @Override
+ public List<String> retracedStackTrace() {
+ return Arrays.asList(
+ "java.lang.IndexOutOfBoundsException",
+ "\tat some.inlinee1(some.java:10)",
+ "\t<OR> at some.inlinee2(some.java:20)",
+ "\tat com.android.tools.r8.Internal.foo(Internal.java:10)",
+ "\t<OR> at com.android.tools.r8.Internal.foo(Internal.java:42)");
+ }
+
+ @Override
+ public List<String> retraceVerboseStackTrace() {
+ return Arrays.asList(
+ "java.lang.IndexOutOfBoundsException",
+ "\tat some.void inlinee1(int)(some.java:10)",
+ "\t<OR> at some.void inlinee2(int,int)(some.java:20)",
+ "\tat com.android.tools.r8.Internal.void foo(int)(Internal.java:10)",
+ "\t<OR> at com.android.tools.r8.Internal.void foo(int,int)(Internal.java:42)");
+ }
+
+ @Override
+ public int expectedWarnings() {
+ return 0;
+ }
+}