Retrace: Add inlining frames test with missing line numbers
Bug: 132850880
Change-Id: I404a82cbe657a2707bd998088c80aaac32f7b2f6
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 286d664..341ce34 100644
--- a/src/test/java/com/android/tools/r8/retrace/RetraceTests.java
+++ b/src/test/java/com/android/tools/r8/retrace/RetraceTests.java
@@ -18,6 +18,7 @@
import com.android.tools.r8.retrace.stacktraces.ActualIdentityStackTrace;
import com.android.tools.r8.retrace.stacktraces.ActualRetraceBotStackTrace;
import com.android.tools.r8.retrace.stacktraces.FileNameExtensionStackTrace;
+import com.android.tools.r8.retrace.stacktraces.InlineNoLineNumberStackTrace;
import com.android.tools.r8.retrace.stacktraces.InlineWithLineNumbersStackTrace;
import com.android.tools.r8.retrace.stacktraces.InvalidStackTrace;
import com.android.tools.r8.retrace.stacktraces.NullStackTrace;
@@ -113,6 +114,11 @@
runRetraceTest(new InlineWithLineNumbersStackTrace());
}
+ @Test
+ public void testInliningNoLineNumberInfoStackTraces() {
+ runRetraceTest(new InlineNoLineNumberStackTrace());
+ }
+
private TestDiagnosticMessagesImpl runRetraceTest(StackTraceForTest stackTraceForTest) {
TestDiagnosticMessagesImpl diagnosticsHandler = new TestDiagnosticMessagesImpl();
RetraceCommand retraceCommand =
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/InlineNoLineNumberStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/InlineNoLineNumberStackTrace.java
new file mode 100644
index 0000000..dda09dd
--- /dev/null
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/InlineNoLineNumberStackTrace.java
@@ -0,0 +1,49 @@
+// Copyright (c) 2019, 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 InlineNoLineNumberStackTrace implements StackTraceForTest {
+
+ @Override
+ public List<String> obfuscatedStackTrace() {
+ return Arrays.asList(
+ "Exception in thread \"main\" java.lang.NullPointerException",
+ "\tat com.android.tools.r8.naming.retrace.Main.main(:3)");
+ }
+
+ @Override
+ public List<String> retracedStackTrace() {
+ return Arrays.asList(
+ "Exception in thread \"main\" java.lang.NullPointerException",
+ "\tat com.android.tools.r8.naming.retrace.Main.method3(Main.java:0)",
+ "\tat com.android.tools.r8.naming.retrace.Main.method2(Main.java:0)",
+ "\tat com.android.tools.r8.naming.retrace.Main.method1(Main.java:0)",
+ "\tat com.android.tools.r8.naming.retrace.Main.main(Main.java:0)");
+ }
+
+ @Override
+ public String mapping() {
+ return StringUtils.lines(
+ "com.android.tools.r8.naming.retrace.Main -> com.android.tools.r8.naming.retrace.Main:",
+ " 1:1:void method1(java.lang.String):0:0 -> main",
+ " 1:1:void main(java.lang.String[]):0 -> main",
+ " 2:2:void method2(int):0:0 -> main",
+ " 2:2:void method1(java.lang.String):0 -> main",
+ " 2:2:void main(java.lang.String[]):0 -> main",
+ " 3:3:void method3(long):0:0 -> main",
+ " 3:3:void method2(int):0 -> main",
+ " 3:3:void method1(java.lang.String):0 -> main",
+ " 3:3:void main(java.lang.String[]):0 -> main");
+ }
+
+ @Override
+ public int expectedWarnings() {
+ return 0;
+ }
+}