[Retrace] Retrace no pos and 0 to the possible set of original frames

The above possible set is only used in the case where no exact range(s) exists for position 0.

Bug: b/231622686
Bug: b/270593835
Change-Id: If29d70b67aec0586da7cf04c27c9d06a087a9049
diff --git a/src/main/java/com/android/tools/r8/naming/ClassNamingForNameMapper.java b/src/main/java/com/android/tools/r8/naming/ClassNamingForNameMapper.java
index 15efe36..2a1408a 100644
--- a/src/main/java/com/android/tools/r8/naming/ClassNamingForNameMapper.java
+++ b/src/main/java/com/android/tools/r8/naming/ClassNamingForNameMapper.java
@@ -139,6 +139,10 @@
 
   /** List of MappedRanges that belong to the same renamed name. */
   public static class MappedRangesOfName {
+
+    private static final MappedRangesOfName EMPTY_INSTANCE =
+        new MappedRangesOfName(Collections.emptyList());
+
     private final List<MappedRange> mappedRanges;
 
     public MappedRangesOfName(List<MappedRange> mappedRanges) {
@@ -211,6 +215,10 @@
       return mappedRanges;
     }
 
+    public static MappedRangesOfName empty() {
+      return EMPTY_INSTANCE;
+    }
+
     @Override
     public boolean equals(Object o) {
       if (this == o) {
@@ -562,7 +570,7 @@
      */
     private List<MappingInformation> additionalMappingInformation = EMPTY_MAPPING_INFORMATION;
 
-    MappedRange(
+    public MappedRange(
         Range minifiedRange, MethodSignature signature, Range originalRange, String renamedName) {
       this.minifiedRange = minifiedRange;
       this.signature = signature;
diff --git a/src/main/java/com/android/tools/r8/retrace/internal/MemberNamingWithMappedRangesOfName.java b/src/main/java/com/android/tools/r8/retrace/internal/MemberNamingWithMappedRangesOfName.java
index 26d5a16..d60e6bf 100644
--- a/src/main/java/com/android/tools/r8/retrace/internal/MemberNamingWithMappedRangesOfName.java
+++ b/src/main/java/com/android/tools/r8/retrace/internal/MemberNamingWithMappedRangesOfName.java
@@ -34,7 +34,20 @@
     return mappedRangesOfName.getMappedRanges();
   }
 
+  List<MappedRange> getMappedRangesWithNoMinifiedRangeAndPositionZero() {
+    return mappedRangesOfName.allRangesForLine(0, true);
+  }
+
   public MemberNaming getMemberNaming() {
     return methodMemberNaming;
   }
+
+  public boolean isSingleCatchAllRange() {
+    if (getMappedRanges().size() == 1) {
+      MappedRange singleMappedRange = ListUtils.first(getMappedRanges());
+      return singleMappedRange.minifiedRange != null
+          && singleMappedRange.minifiedRange.isCatchAll();
+    }
+    return false;
+  }
 }
diff --git a/src/main/java/com/android/tools/r8/retrace/internal/RetraceFrameResultImpl.java b/src/main/java/com/android/tools/r8/retrace/internal/RetraceFrameResultImpl.java
index b48e8c2..f82327a 100644
--- a/src/main/java/com/android/tools/r8/retrace/internal/RetraceFrameResultImpl.java
+++ b/src/main/java/com/android/tools/r8/retrace/internal/RetraceFrameResultImpl.java
@@ -90,6 +90,7 @@
               RetraceClassElementImpl classElement = mappedRangeData.getRetraceClassElement();
               List<MemberNamingWithMappedRangesOfName> memberNamingWithMappedRangesOfNames =
                   mappedRangeData.getMemberNamingWithMappedRanges();
+              OptionalInt position = mappedRangeData.getPosition();
               if (memberNamingWithMappedRangesOfNames == null
                   || memberNamingWithMappedRangesOfNames.isEmpty()) {
                 return Stream.of(
@@ -101,7 +102,7 @@
                                 classElement.getRetracedClass().getClassReference())),
                         ImmutableList.of(),
                         Optional.empty(),
-                        mappedRangeData.getPosition(),
+                        position,
                         retracer));
               }
               // Iterate over mapped ranges that may have different positions than specified.
@@ -110,6 +111,23 @@
                   memberNamingWithMappedRangesOfNames) {
                 List<MappedRange> mappedRangesForMemberNaming =
                     memberNamingWithMappedRangesOfName.getMappedRanges();
+                MemberNaming memberNaming = memberNamingWithMappedRangesOfName.getMemberNaming();
+                if (mappedRangesForMemberNaming.isEmpty()) {
+                  assert memberNaming != null;
+                  MappedRange mappedRange =
+                      new MappedRange(
+                          null,
+                          memberNaming.getOriginalSignature().asMethodSignature(),
+                          null,
+                          memberNaming.getRenamedName());
+                  ambiguousFrames.add(
+                      elementFromMappedRanges(
+                          Collections.singletonList(MappedRangeForFrame.create(mappedRange)),
+                          Optional.of(memberNaming),
+                          classElement,
+                          position));
+                  continue;
+                }
                 MappedRange firstMappedRange = mappedRangesForMemberNaming.get(0);
                 Range minifiedRange = firstMappedRange.minifiedRange;
                 List<MappedRange> mappedRangesForElement = Lists.newArrayList(firstMappedRange);
@@ -119,10 +137,10 @@
                     // This is a new frame
                     separateAmbiguousOriginalPositions(
                         classElement,
-                        Optional.ofNullable(memberNamingWithMappedRangesOfName.getMemberNaming()),
+                        Optional.ofNullable(memberNaming),
                         mappedRangesForElement,
                         ambiguousFrames,
-                        mappedRangeData.getPosition());
+                        position);
                     mappedRangesForElement = new ArrayList<>();
                     minifiedRange = mappedRange.minifiedRange;
                   }
@@ -130,10 +148,10 @@
                 }
                 separateAmbiguousOriginalPositions(
                     classElement,
-                    Optional.ofNullable(memberNamingWithMappedRangesOfName.getMemberNaming()),
+                    Optional.ofNullable(memberNaming),
                     mappedRangesForElement,
                     ambiguousFrames,
-                    mappedRangeData.getPosition());
+                    position);
               }
               return ambiguousFrames.stream();
             });
diff --git a/src/main/java/com/android/tools/r8/retrace/internal/RetraceMethodResultImpl.java b/src/main/java/com/android/tools/r8/retrace/internal/RetraceMethodResultImpl.java
index 86af9c0..3a95c5f 100644
--- a/src/main/java/com/android/tools/r8/retrace/internal/RetraceMethodResultImpl.java
+++ b/src/main/java/com/android/tools/r8/retrace/internal/RetraceMethodResultImpl.java
@@ -94,7 +94,7 @@
     if (context instanceof RetraceStackTraceContextImpl) {
       stackTraceContext = (RetraceStackTraceContextImpl) context;
     }
-    boolean hasPosition = position.isPresent() && position.getAsInt() >= 0;
+    boolean hasPosition = position.isPresent() && position.getAsInt() > 0;
     Function<MemberNamingWithMappedRangesOfName, List<MappedRange>> selector =
         hasPosition ? filterOnExistingPosition(position.getAsInt()) : filterOnNoPosition();
     for (Pair<RetraceClassElementImpl, List<MemberNamingWithMappedRangesOfName>> mappedRange :
@@ -114,9 +114,27 @@
       }
     }
     if (narrowedRanges.isEmpty()) {
+      boolean preamblePosition = position.isEmpty() || position.getAsInt() <= 0;
       for (Pair<RetraceClassElementImpl, List<MemberNamingWithMappedRangesOfName>> mappedRange :
           mappedRanges) {
-        narrowedRanges.add(new RetraceFrameResultData(mappedRange.getFirst(), null, position));
+        List<MemberNamingWithMappedRangesOfName> memberNamingWithMappedRanges = new ArrayList<>();
+        // If we could find a result, and we have observed a reported preamble position, we create a
+        // mapping containing only the member-naming.
+        if (mappedRange.getSecond() != null && preamblePosition) {
+          memberNamingWithMappedRanges =
+              ListUtils.map(
+                  mappedRange.getSecond(),
+                  m ->
+                      // Check if we have a catch-all range since that could map 0 to a non-zero
+                      // original line.
+                      m.isSingleCatchAllRange()
+                          ? m
+                          : new MemberNamingWithMappedRangesOfName(
+                              m.getMemberNaming(), MappedRangesOfName.empty()));
+        }
+        narrowedRanges.add(
+            new RetraceFrameResultData(
+                mappedRange.getFirst(), memberNamingWithMappedRanges, position));
       }
     }
     return new RetraceFrameResultImpl(
@@ -186,7 +204,7 @@
   }
 
   private Function<MemberNamingWithMappedRangesOfName, List<MappedRange>> filterOnNoPosition() {
-    return MemberNamingWithMappedRangesOfName::getMappedRanges;
+    return MemberNamingWithMappedRangesOfName::getMappedRangesWithNoMinifiedRangeAndPositionZero;
   }
 
   @Override
diff --git a/src/test/java/com/android/tools/r8/naming/retraceproguard/CatchAllRangeWithNoLineNumberTest.java b/src/test/java/com/android/tools/r8/naming/retraceproguard/CatchAllRangeWithNoLineNumberTest.java
index 4372134..aac289a 100644
--- a/src/test/java/com/android/tools/r8/naming/retraceproguard/CatchAllRangeWithNoLineNumberTest.java
+++ b/src/test/java/com/android/tools/r8/naming/retraceproguard/CatchAllRangeWithNoLineNumberTest.java
@@ -26,7 +26,6 @@
 @RunWith(Parameterized.class)
 public class CatchAllRangeWithNoLineNumberTest extends TestBase {
 
-  private final TestParameters parameters;
   private final ProguardVersion proguardVersion;
 
   @Parameters(name = "{0}, {1}")
@@ -36,8 +35,8 @@
 
   public CatchAllRangeWithNoLineNumberTest(
       TestParameters parameters, ProguardVersion proguardVersion) {
-    this.parameters = parameters;
     this.proguardVersion = proguardVersion;
+    parameters.assertNoneRuntime();
   }
 
   private final String[] stackTrace =
@@ -85,7 +84,7 @@
   private final String retracedR8 =
       StringUtils.lines(
           "\tat foo.bar.Baz.foo(Baz.java:33)",
-          "\tat foo.bar.Qux.foo(Qux.java:33)",
+          "\tat foo.bar.Qux.foo(Qux.java)",
           "\tat foo.bar.Quux.foo(Quux.java:33)",
           "\tat foo.bar.Baz.foo(Baz.java:33)",
           "\tat foo.bar.Baz.foo(Baz.java:33)");
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 36a00f1..c8ce59b 100644
--- a/src/test/java/com/android/tools/r8/retrace/RetraceTests.java
+++ b/src/test/java/com/android/tools/r8/retrace/RetraceTests.java
@@ -43,7 +43,6 @@
 import com.android.tools.r8.retrace.stacktraces.InlineNoLineNumberStackTrace;
 import com.android.tools.r8.retrace.stacktraces.InlineNoLineWithBaseEntryNumberAssumeNoInlineStackTrace;
 import com.android.tools.r8.retrace.stacktraces.InlinePreambleNoOriginalStackTrace;
-import com.android.tools.r8.retrace.stacktraces.InlinePreambleWithOriginalStackTrace;
 import com.android.tools.r8.retrace.stacktraces.InlineSourceFileContextStackTrace;
 import com.android.tools.r8.retrace.stacktraces.InlineSourceFileStackTrace;
 import com.android.tools.r8.retrace.stacktraces.InlineWithLineNumbersStackTrace;
@@ -248,11 +247,6 @@
   }
 
   @Test
-  public void testInlinePreambleWithOriginalStackTrace() throws Exception {
-    runRetraceTest(new InlinePreambleWithOriginalStackTrace());
-  }
-
-  @Test
   public void testInlinePreambleNoOriginalStackTrace() throws Exception {
     runRetraceTest(new InlinePreambleNoOriginalStackTrace());
   }
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 80d580b..480f8bf 100644
--- a/src/test/java/com/android/tools/r8/retrace/StackTraceRegularExpressionParserTests.java
+++ b/src/test/java/com/android/tools/r8/retrace/StackTraceRegularExpressionParserTests.java
@@ -485,12 +485,12 @@
 
           @Override
           public List<String> retracedStackTrace() {
-            return ImmutableList.of("com.android.tools.r8.R8.foo(7)");
+            return ImmutableList.of("com.android.tools.r8.R8.foo()");
           }
 
           @Override
           public List<String> retraceVerboseStackTrace() {
-            return ImmutableList.of("com.android.tools.r8.R8.boolean foo()(7)");
+            return ImmutableList.of("com.android.tools.r8.R8.boolean foo()()");
           }
 
           @Override
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousWithMultipleLineMappingsStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousWithMultipleLineMappingsStackTrace.java
index 51a9249..1041ace 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousWithMultipleLineMappingsStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousWithMultipleLineMappingsStackTrace.java
@@ -40,9 +40,7 @@
     return Arrays.asList(
         "java.lang.IndexOutOfBoundsException",
         "\tat java.util.ArrayList.get(ArrayList.java:411)",
-        "\tat com.android.tools.r8.Internal.void foo(int)(Internal.java:10)",
-        "\t<OR> at com.android.tools.r8.Internal.void foo(int)(Internal.java:11)",
-        "\t<OR> at com.android.tools.r8.Internal.void foo(int)(Internal.java:12)");
+        "\tat com.android.tools.r8.Internal.void foo(int)(Internal.java)");
   }
 
   @Override
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousWithSignatureStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousWithSignatureStackTrace.java
index c9ed69c..1f0cd0c 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousWithSignatureStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousWithSignatureStackTrace.java
@@ -41,10 +41,10 @@
     return Arrays.asList(
         "java.lang.IndexOutOfBoundsException",
         "\tat java.util.ArrayList.get(ArrayList.java:411)",
-        "\tat com.android.tools.r8.Internal.boolean foo(int,int)(Internal.java:13)",
-        "\t<OR> at com.android.tools.r8.Internal.void foo(int)(Internal.java:10)",
-        "\t<OR> at com.android.tools.r8.Internal.void foo(int,boolean)(Internal.java:12)",
-        "\t<OR> at com.android.tools.r8.Internal.void foo(int,int)(Internal.java:11)");
+        "\tat com.android.tools.r8.Internal.boolean foo(int,int)(Internal.java)",
+        "\t<OR> at com.android.tools.r8.Internal.void foo(int)(Internal.java)",
+        "\t<OR> at com.android.tools.r8.Internal.void foo(int,boolean)(Internal.java)",
+        "\t<OR> at com.android.tools.r8.Internal.void foo(int,int)(Internal.java)");
   }
 
   @Override
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/InlineNoLineAssumeNoInlineAmbiguousStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/InlineNoLineAssumeNoInlineAmbiguousStackTrace.java
index 515d6b0..7c63a27 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/InlineNoLineAssumeNoInlineAmbiguousStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/InlineNoLineAssumeNoInlineAmbiguousStackTrace.java
@@ -21,20 +21,14 @@
   public List<String> retracedStackTrace() {
     return Arrays.asList(
         "Exception in thread \"main\" java.lang.NullPointerException",
-        // TODO(b/231622686): Should not emit inline frame.
-        "\tat retrace.Main.method1(Main.java)",
-        "\tat retrace.Main.main(Main.java)",
-        "\t<OR> at retrace.Main.otherMain(Main.java)");
+        "\tat retrace.Main.otherMain(Main.java)");
   }
 
   @Override
   public List<String> retraceVerboseStackTrace() {
     return Arrays.asList(
         "Exception in thread \"main\" java.lang.NullPointerException",
-        // TODO(b/231622686): Should not emit inline frame.
-        "\tat retrace.Main.void method1(java.lang.String)(Main.java:0)",
-        "\tat retrace.Main.void main(java.lang.String[])(Main.java:0)",
-        "\t<OR> at retrace.Main.void otherMain(java.lang.String[])(Main.java)");
+        "\tat retrace.Main.void otherMain(java.lang.String[])(Main.java)");
   }
 
   @Override
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/InlineNoLineNumberAssumeNoInlineStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/InlineNoLineNumberAssumeNoInlineStackTrace.java
index ffc5da2..9382f6e 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/InlineNoLineNumberAssumeNoInlineStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/InlineNoLineNumberAssumeNoInlineStackTrace.java
@@ -19,12 +19,8 @@
 
   @Override
   public List<String> retracedStackTrace() {
-    // TODO(b/231622686): Should assume that no lines means no inline frames.
     return Arrays.asList(
         "Exception in thread \"main\" java.lang.NullPointerException",
-        "\tat retrace.Main.method1(Main.java)",
-        "\tat retrace.Main.main(Main.java)",
-        "\t<OR> at retrace.Main.method2(Main.java)",
         "\tat retrace.Main.main(Main.java)");
   }
 
@@ -33,10 +29,7 @@
     // TODO(b/231622686): Should assume that no lines means no inline frames.
     return Arrays.asList(
         "Exception in thread \"main\" java.lang.NullPointerException",
-        "\tat retrace.Main.void method1(java.lang.String)(Main.java:0)",
-        "\tat retrace.Main.void main(java.lang.String[])(Main.java:0)",
-        "\t<OR> at retrace.Main.void method2(int)(Main.java:0)",
-        "\tat retrace.Main.void main(java.lang.String[])(Main.java:0)");
+        "\tat retrace.Main.void main(java.lang.String[])(Main.java)");
   }
 
   @Override
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/InlineNoLineWithBaseEntryNumberAssumeNoInlineStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/InlineNoLineWithBaseEntryNumberAssumeNoInlineStackTrace.java
index 3e52ebd..3e6de74 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/InlineNoLineWithBaseEntryNumberAssumeNoInlineStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/InlineNoLineWithBaseEntryNumberAssumeNoInlineStackTrace.java
@@ -19,22 +19,16 @@
 
   @Override
   public List<String> retracedStackTrace() {
-    // TODO(b/231622686): Should assume that no lines means no inline frames.
     return Arrays.asList(
         "Exception in thread \"main\" java.lang.NullPointerException",
-        "\tat retrace.Main.main(Main.java)",
-        "\t<OR> at retrace.Main.method1(Main.java)",
         "\tat retrace.Main.main(Main.java)");
   }
 
   @Override
   public List<String> retraceVerboseStackTrace() {
-    // TODO(b/231622686): Should assume that no lines means no inline frames.
     return Arrays.asList(
         "Exception in thread \"main\" java.lang.NullPointerException",
-        "\tat retrace.Main.void main(java.lang.String[])(Main.java)",
-        "\t<OR> at retrace.Main.void method1(java.lang.String)(Main.java:0)",
-        "\tat retrace.Main.void main(java.lang.String[])(Main.java:0)");
+        "\tat retrace.Main.void main(java.lang.String[])(Main.java)");
   }
 
   @Override
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/InlinePreambleNoOriginalStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/InlinePreambleNoOriginalStackTrace.java
index 47732b8..79a9172 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/InlinePreambleNoOriginalStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/InlinePreambleNoOriginalStackTrace.java
@@ -20,21 +20,15 @@
   @Override
   public List<String> retracedStackTrace() {
     return Arrays.asList(
-        // TODO(b/231622686): Should only include preamble
         "Exception in thread \"main\" java.lang.NullPointerException",
-        "\tat retrace.Main.main(Main.java)",
-        "\t<OR> at retrace.Main.method1(Main.java)",
         "\tat retrace.Main.main(Main.java)");
   }
 
   @Override
   public List<String> retraceVerboseStackTrace() {
     return Arrays.asList(
-        // TODO(b/231622686): Should only include preamble
         "Exception in thread \"main\" java.lang.NullPointerException",
-        "\tat retrace.Main.void main(java.lang.String[])(Main.java)",
-        "\t<OR> at retrace.Main.void method1(java.lang.String)(Main.java:0)",
-        "\tat retrace.Main.void main(java.lang.String[])(Main.java:0)");
+        "\tat retrace.Main.void main(java.lang.String[])(Main.java)");
   }
 
   @Override
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/InlinePreambleWithOriginalStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/InlinePreambleWithOriginalStackTrace.java
deleted file mode 100644
index 72c2076..0000000
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/InlinePreambleWithOriginalStackTrace.java
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright (c) 2022, 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 InlinePreambleWithOriginalStackTrace implements StackTraceForTest {
-
-  @Override
-  public List<String> obfuscatedStackTrace() {
-    return Arrays.asList(
-        "Exception in thread \"main\" java.lang.NullPointerException",
-        "\tat a.foo(Unknown Source)");
-  }
-
-  @Override
-  public List<String> retracedStackTrace() {
-    return Arrays.asList(
-        // TODO(b/231622686): Should only include preamble
-        "Exception in thread \"main\" java.lang.NullPointerException",
-        "\tat retrace.Main.main(Main.java)",
-        "\t<OR> at retrace.Main.method1(Main.java)",
-        "\tat retrace.Main.main(Main.java)");
-  }
-
-  @Override
-  public List<String> retraceVerboseStackTrace() {
-    return Arrays.asList(
-        // TODO(b/231622686): Should only include preamble
-        "Exception in thread \"main\" java.lang.NullPointerException",
-        "\tat retrace.Main.void main(java.lang.String[])(Main.java:0)",
-        "\t<OR> at retrace.Main.void method1(java.lang.String)(Main.java:0)",
-        "\tat retrace.Main.void main(java.lang.String[])(Main.java:0)");
-  }
-
-  @Override
-  public String mapping() {
-    return StringUtils.lines(
-        "retrace.Main -> a:",
-        "    0:1:void main(java.lang.String[]):0:0 -> foo",
-        "    2:2:void method1(java.lang.String):0:0 -> foo",
-        "    2:2:void main(java.lang.String[]):0 -> foo");
-  }
-
-  @Override
-  public int expectedWarnings() {
-    return 0;
-  }
-}
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/MultipleLinesNoLineNumberStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/MultipleLinesNoLineNumberStackTrace.java
index b1a31db..3f5746d 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/MultipleLinesNoLineNumberStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/MultipleLinesNoLineNumberStackTrace.java
@@ -30,9 +30,8 @@
   public List<String> retracedStackTrace() {
     return Arrays.asList(
         "Exception in thread \"main\" java.lang.NullPointerException",
-        "\tat com.android.tools.r8.naming.retrace.Main.main(Main.java)",
-        "\t<OR> at com.android.tools.r8.naming.retrace.Main.method1(Main.java)",
-        "\tat com.android.tools.r8.naming.retrace.Main.main(Main.java)");
+        "\tat com.android.tools.r8.naming.retrace.Main.method1(Main.java:42)",
+        "\tat com.android.tools.r8.naming.retrace.Main.main(Main.java:28)");
   }
 
   @Override
@@ -40,8 +39,6 @@
     return Arrays.asList(
         "Exception in thread \"main\" java.lang.NullPointerException",
         "\tat com.android.tools.r8.naming.retrace.Main.void"
-            + " main(java.lang.String[])(Main.java:153)",
-        "\t<OR> at com.android.tools.r8.naming.retrace.Main.void"
             + " method1(java.lang.String)(Main.java:42)",
         "\tat com.android.tools.r8.naming.retrace.Main.void"
             + " main(java.lang.String[])(Main.java:28)");
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/OutsideLineRangeStackTraceTest.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/OutsideLineRangeStackTraceTest.java
index ea9ada4..2ebf79a 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/OutsideLineRangeStackTraceTest.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/OutsideLineRangeStackTraceTest.java
@@ -47,8 +47,7 @@
         "\tat some.other.Class.void method1()(Class.java:42)",
         "\tat some.other.Class.void method1()(Class.java:42)",
         "\tat some.Class.a(Class.java:27)",
-        "\tat some.Class.void method2()(Class.java)",
-        "\t<OR> at some.Class.void method2()(Class.java:10)");
+        "\tat some.Class.void method2()(Class.java)");
   }
 
   @Override
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/PreambleLineNumberStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/PreambleLineNumberStackTrace.java
index 316fdfc..98a6ed6 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/PreambleLineNumberStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/PreambleLineNumberStackTrace.java
@@ -33,8 +33,7 @@
     return Arrays.asList(
         "Exception in thread \"main\" java.lang.NullPointerException",
         "  at kotlin.ResultKt.createFailure(Result.kt)",
-        // TODO(b/270593835): We should report kotlin.ResultKt.createFailure(Result.kt).
-        "  at kotlin.ResultKt.a(Result.kt:0)",
+        "  at kotlin.ResultKt.createFailure(Result.kt:0)",
         "  at kotlin.ResultKt.createFailure(Result.kt:122)",
         "  at kotlin.ResultKt.createFailure(Result.kt:124)");
   }
@@ -43,11 +42,8 @@
   public List<String> retraceVerboseStackTrace() {
     return Arrays.asList(
         "Exception in thread \"main\" java.lang.NullPointerException",
-        // TODO(b/270593835): We should not have an ambiguous frame reporting here.
-        "  at kotlin.ResultKt.void createFailure(java.lang.Throwable)(Result.kt:122)",
-        "  <OR> at kotlin.ResultKt.void createFailure(java.lang.Throwable)(Result.kt:124)",
-        // TODO(b/270593835): We should report kotlin.ResultKt.createFailure(Result.kt).
-        "  at kotlin.ResultKt.a(Result.kt:0)",
+        "  at kotlin.ResultKt.void createFailure(java.lang.Throwable)(Result.kt)",
+        "  at kotlin.ResultKt.void createFailure(java.lang.Throwable)(Result.kt:0)",
         "  at kotlin.ResultKt.void createFailure(java.lang.Throwable)(Result.kt:122)",
         "  at kotlin.ResultKt.void createFailure(java.lang.Throwable)(Result.kt:124)");
   }