[Retrace] Reduce number of groups for sourcefile

Bug: b/234758957
Change-Id: I4452667803c49b53b353ac7b46649a8b7846bf24
diff --git a/src/main/java/com/android/tools/r8/retrace/internal/StackTraceRegularExpressionParser.java b/src/main/java/com/android/tools/r8/retrace/internal/StackTraceRegularExpressionParser.java
index ff09bd7..973a89d 100644
--- a/src/main/java/com/android/tools/r8/retrace/internal/StackTraceRegularExpressionParser.java
+++ b/src/main/java/com/android/tools/r8/retrace/internal/StackTraceRegularExpressionParser.java
@@ -112,18 +112,6 @@
     return captureGroupIndex;
   }
 
-  private boolean isTypeOrBinarySeparator(String regularExpression, int startIndex, int endIndex) {
-    assert endIndex < regularExpression.length();
-    if (startIndex + 1 != endIndex) {
-      return false;
-    }
-    if (regularExpression.charAt(startIndex) != '\\') {
-      return false;
-    }
-    return regularExpression.charAt(startIndex + 1) == '.'
-        || regularExpression.charAt(startIndex + 1) == '/';
-  }
-
   private RegularExpressionGroup getGroupFromVariable(char variable) {
     switch (variable) {
       case 'c':
@@ -274,16 +262,12 @@
 
   private static class SourceFileGroup extends RegularExpressionGroup {
 
-    static String subExpressionInternal() {
-      String anyNonDigitNonColonNonWhitespaceChar = "^\\d:\\s";
-      String anyNonColonChar = "^:";
-      String colonWithNonDigitSuffix = ":+[" + anyNonDigitNonColonNonWhitespaceChar + "]";
-      return "((?:(?:(?:" + colonWithNonDigitSuffix + "))|(?:[" + anyNonColonChar + "]))+)?";
-    }
-
     @Override
     String subExpression() {
-      return subExpressionInternal();
+      String anyNonDigitNonColonCharNonWhiteSpace = "[^\\d:\\s]";
+      String anyNonColonChar = "[^:]";
+      String colonsWithNonDigitOrWhiteSpaceSuffix = ":+" + anyNonDigitNonColonCharNonWhiteSpace;
+      return "(?:" + colonsWithNonDigitOrWhiteSpaceSuffix + "|" + anyNonColonChar + "*)*";
     }
 
     @Override
@@ -323,7 +307,7 @@
 
     @Override
     String subExpression() {
-      return SourceFileGroup.subExpressionInternal() + "(?::\\d*)?";
+      return ".*";
     }
 
     @Override
@@ -333,8 +317,8 @@
         if (startOfGroup == NO_MATCH) {
           return false;
         }
-        int endOfSourceFineInGroup = findEndOfSourceFile(matcher.group(captureGroup));
-        int sourceFileEnd = startOfGroup + endOfSourceFineInGroup;
+        int endOfSourceFileInGroup = findEndOfSourceFile(matcher.group(captureGroup));
+        int sourceFileEnd = startOfGroup + endOfSourceFileInGroup;
         builder.registerSourceFile(startOfGroup, sourceFileEnd);
         int endOfMatch = matcher.end(captureGroup);
         int lineNumberStart = sourceFileEnd + 1;
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 8cedcb9..80d580b 100644
--- a/src/test/java/com/android/tools/r8/retrace/StackTraceRegularExpressionParserTests.java
+++ b/src/test/java/com/android/tools/r8/retrace/StackTraceRegularExpressionParserTests.java
@@ -1089,7 +1089,7 @@
   @Test
   public void testGroups() {
     runRetraceTest(
-        "(?:(?:.*?%c %m\\(%s(?:: %l)?\\)))",
+        "(?:(?:.*?%c %m\\(%s\\s*:\\s*%l\\s*\\)))",
         new StackTraceForTest() {
           @Override
           public List<String> obfuscatedStackTrace() {
@@ -1114,9 +1114,9 @@
             return ImmutableList.of(
                 "this.was.Deobfuscated someMethod(Deobfuscated.java: 65)",
                 "this.was.Deobfuscated someMethod(Deobfuscated.java: 65)",
-                "FOO bar(PG:1)",
-                "FOO bar(PG:1 )",
-                "FOO bar(PG: 1 )");
+                "this.was.Deobfuscated someMethod(Deobfuscated.java:65)",
+                "this.was.Deobfuscated someMethod(Deobfuscated.java:65 )",
+                "this.was.Deobfuscated someMethod(Deobfuscated.java: 65 )");
           }
 
           @Override
@@ -1124,9 +1124,9 @@
             return ImmutableList.of(
                 "this.was.Deobfuscated void someMethod(int)(Deobfuscated.java: 65)",
                 "this.was.Deobfuscated void someMethod(int)(Deobfuscated.java: 65)",
-                "FOO bar(PG:1)",
-                "FOO bar(PG:1 )",
-                "FOO bar(PG: 1 )");
+                "this.was.Deobfuscated void someMethod(int)(Deobfuscated.java:65)",
+                "this.was.Deobfuscated void someMethod(int)(Deobfuscated.java:65 )",
+                "this.was.Deobfuscated void someMethod(int)(Deobfuscated.java: 65 )");
           }
 
           @Override
@@ -1137,8 +1137,7 @@
   }
 
   /** This is a regression test for b/234758957 */
-  // TODO(b/234758957): Should not loop.
-  @Test(expected = StackOverflowError.class)
+  @Test()
   public void testLongLine() {
     runRetraceTest("(?:.*?\\(\\s*%s(?:\\s*:\\s*%l\\s*)?\\)\\s*%c\\.%m)|", new LongLineStackTrace());
   }