[Retrace] Account for nullable field when testing equivalence
Bug: 216359244
Change-Id: I54483e37593bfb223809a3d5d27e8dec23b9d085
diff --git a/src/main/java/com/android/tools/r8/retrace/Retrace.java b/src/main/java/com/android/tools/r8/retrace/Retrace.java
index 14b393c..b4467ea 100644
--- a/src/main/java/com/android/tools/r8/retrace/Retrace.java
+++ b/src/main/java/com/android/tools/r8/retrace/Retrace.java
@@ -602,7 +602,10 @@
RetraceStackTraceElementProxy<T, ST> other,
Function<RetraceStackTraceElementProxy<T, ST>, Boolean> predicate,
Function<RetraceStackTraceElementProxy<T, ST>, V> getter) {
- return Comparator.comparing(predicate).thenComparing(getter).compare(one, other) != 0;
+ return Comparator.comparing(predicate)
+ .thenComparing(getter, Comparator.nullsFirst(V::compareTo))
+ .compare(one, other)
+ != 0;
}
public static <T, ST extends StackTraceElementProxy<T, ST>>
diff --git a/src/test/java/com/android/tools/r8/retrace/StackTraceRegularExpressionParserTests.java b/src/test/java/com/android/tools/r8/retrace/StackTraceRegularExpressionParserTests.java
index fe8cd5b..6c19c5f 100644
--- a/src/test/java/com/android/tools/r8/retrace/StackTraceRegularExpressionParserTests.java
+++ b/src/test/java/com/android/tools/r8/retrace/StackTraceRegularExpressionParserTests.java
@@ -945,8 +945,7 @@
}
/* This is a regression test for b/216359244 */
- // TODO(b/216359244): Should not fail with an NPE.
- @Test(expected = NullPointerException.class)
+ @Test
public void testMissingSourceFile() {
runRetraceTest(
".*FOO\\s+:\\s+\\[\\d+\\]\\s+%c\\.%m\\(%l\\):.*",