Collapse ranges for outline positions into one line

Bug: b/294904638
Change-Id: I89af320202301c543f81eb07aff90c8272e47617
diff --git a/src/main/java/com/android/tools/r8/utils/positions/MappedPositionToClassNameMapperBuilder.java b/src/main/java/com/android/tools/r8/utils/positions/MappedPositionToClassNameMapperBuilder.java
index 7c2c9d6..543e7d9 100644
--- a/src/main/java/com/android/tools/r8/utils/positions/MappedPositionToClassNameMapperBuilder.java
+++ b/src/main/java/com/android/tools/r8/utils/positions/MappedPositionToClassNameMapperBuilder.java
@@ -315,14 +315,16 @@
           // multiple inlining passes lose the canonical property of the positions.
           Position currentPosition = currentMappedPosition.getPosition();
           Position lastPosition = lastMappedPosition.getPosition();
-          if (currentPosition.getMethod() != lastPosition.getMethod()
-              || mappedPositionRange.isOutOfRange()
+          if (mappedPositionRange.isOutOfRange()
+              // Check if inline positions has changed
+              || currentPosition.getMethod() != lastPosition.getMethod()
               || !Objects.equals(
                   currentPosition.getCallerPosition(), lastPosition.getCallerPosition())
-              // Break when we see a mapped outline
-              || currentPosition.getOutlineCallee() != null
-              // Ensure that we break when we start iterating with an outline caller again.
-              || firstMappedPosition.getPosition().getOutlineCallee() != null) {
+              // Check if outline positions has changed
+              || !Objects.equals(
+                  currentPosition.getOutlineCallee(), lastPosition.getOutlineCallee())
+              || !Objects.equals(
+                  currentPosition.getOutlinePositions(), lastPosition.getOutlinePositions())) {
             break;
           }
           lastMappedPosition = currentMappedPosition;