[Retrace] Update test after emitting 0 as position
Bug: b/255705077
Change-Id: Id2a72e44539226c75abffa47aaf281b67bf6acf4
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 1619359..87698d9 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
@@ -163,6 +163,16 @@
return this;
}
+ public Builder applyIf(
+ boolean condition, Consumer<Builder> trueConsumer, Consumer<Builder> elseConsumer) {
+ if (condition) {
+ trueConsumer.accept(this);
+ } else {
+ elseConsumer.accept(this);
+ }
+ return this;
+ }
+
public StackTraceLine build() {
String lineNumberPart = lineNumber >= 0 ? ":" + lineNumber : "";
String originalLine = className + '.' + methodName + '(' + fileName + lineNumberPart + ')';
diff --git a/src/test/java/com/android/tools/r8/retrace/StackTraceWithPcAndNoLineTableTestRunner.java b/src/test/java/com/android/tools/r8/retrace/StackTraceWithPcAndNoLineTableTestRunner.java
index 6783fa7..47c1d91 100644
--- a/src/test/java/com/android/tools/r8/retrace/StackTraceWithPcAndNoLineTableTestRunner.java
+++ b/src/test/java/com/android/tools/r8/retrace/StackTraceWithPcAndNoLineTableTestRunner.java
@@ -61,24 +61,12 @@
assertEquals(
"SourceFile",
inspector.clazz(getTestClass()).getDexProgramClass().sourceFile.toString());
- // The stack-trace should not have line numbers unless on a VM with DEX PC support.
+ // TODO(b/202919530): The stack-trace should have line positions since they are
+ // essentially free when compiling for dex.
if (parameters.isDexRuntime()
&& parameters.getDexRuntimeVersion().isNewerThanOrEqual(Version.V8_1_0)) {
- if (parameters
- .getApiLevel()
- .isGreaterThanOrEqualTo(apiLevelWithPcAsLineNumberSupport())) {
- // TODO(b/202919530): With PC support it should retrace.
- assertThat(
- stacktrace,
- StackTrace.isSameExceptForLineNumbers(getExpectedStackTrace(true)));
- } else {
- // Compiling for an API level before PC support it may be unfeasible to include
- // the mapping information due to mapping size increase. That is up for
- // discussion.
- assertThat(
- stacktrace,
- StackTrace.isSameExceptForLineNumbers(getExpectedStackTrace(true)));
- }
+ assertThat(
+ stacktrace, StackTrace.isSameExceptForLineNumbers(getExpectedStackTrace(true)));
} else {
// Having stripped the line-number table, the raw stack will not have line info.
assertThat(stacktrace, StackTrace.isSame(getExpectedStackTrace(false)));
@@ -95,14 +83,30 @@
.setClassName(className)
.setFileName(sourceFile)
.setMethodName("foo")
- .applyIf(withLines, b -> b.setLineNumber(10))
+ .applyIf(
+ withLines,
+ b -> b.setLineNumber(10),
+ b -> {
+ if (parameters.isDexRuntime()) {
+ // TODO(b/255705077): Should not have position 0.
+ b.setLineNumber(0);
+ }
+ })
.build())
.add(
StackTraceLine.builder()
.setClassName(className)
.setFileName(sourceFile)
.setMethodName("bar")
- .applyIf(withLines, b -> b.setLineNumber(15))
+ .applyIf(
+ withLines,
+ b -> b.setLineNumber(15),
+ b -> {
+ if (parameters.isDexRuntime()) {
+ // TODO(b/255705077): Should not have position 0.
+ b.setLineNumber(0);
+ }
+ })
.build())
.add(
StackTraceLine.builder()