[Retrace] Adjust regular expression to not match arbitrary messages

Bug: b/300416467
Change-Id: I2c95e745e89a36af5135f8b1ab297231731b61eb
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 720562d..c3b01ce 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
@@ -16,12 +16,22 @@
 public class StackTraceRegularExpressionParser
     implements StackTraceLineParser<String, StackTraceElementStringProxy> {
 
+  private static final String SUPPRESSED_OR_CAUSED_BY = "(Suppressed:\\s+|Caused [bB]y:\\s+)";
+
   // This is a slight modification of the default regular expression shown for proguard retrace
   // that allow for retracing classes in the form <class>: lorem ipsum...
   // Seems like Proguard retrace is expecting the form "Caused by: <class>".
   public static final String DEFAULT_REGULAR_EXPRESSION =
       "(?:.*?\\bat\\s+%c\\.%m\\s*\\(%S\\)\\p{Z}*(?:~\\[.*\\])?)"
-          + "|(?:(?:(?:%c|.*)?[:\"]\\s+)?%c(?::.*)?)";
+          // Match exception classes:
+          //   <class>:
+          // Suppressed: <class>:
+          // Caused by: <class>:
+          + "|"
+          + SUPPRESSED_OR_CAUSED_BY
+          + "?%c:\\s.*"
+          // Match exceptions on the form Exception in thread \"main\" <class>:
+          + "|Exception in .*\".*\"\\s%c";
 
   private final Pattern compiledPattern;
 
@@ -158,7 +168,7 @@
     }
   }
 
-  private static final String identifierSegment = "[^\\s\\[;(<]+";
+  private static final String identifierSegment = "[^\\s\\[;:(<]+";
 
   private static final String METHOD_NAME_REGULAR_EXPRESSION =
       "(?:(" + identifierSegment + "|\\<init\\>|\\<clinit\\>))";
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/ExceptionMessageWithClassNameInMessage.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/ExceptionMessageWithClassNameInMessage.java
index 5b21d1a..fe12cfe 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/ExceptionMessageWithClassNameInMessage.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/ExceptionMessageWithClassNameInMessage.java
@@ -29,8 +29,7 @@
     return ImmutableList.of(
         "10-26 19:26:24.749 10159 26250 26363 E Tycho.crl: Exception",
         "10-26 19:26:24.749 10159 26250 26363 E Tycho.crl: java.util.concurrent.ExecutionException:"
-            // TODO(b/300416467): We should not deobfuscate net.
-            + " ary: eu: Exception in CronetUrlRequest: foo.bar.baz::ERR_CONNECTION_CLOSED,"
+            + " ary: eu: Exception in CronetUrlRequest: net::ERR_CONNECTION_CLOSED,"
             + " ErrorCode=5, InternalErrorCode=-100, Retryable=true");
   }
 
@@ -39,8 +38,7 @@
     return ImmutableList.of(
         "10-26 19:26:24.749 10159 26250 26363 E Tycho.crl: Exception",
         "10-26 19:26:24.749 10159 26250 26363 E Tycho.crl: java.util.concurrent.ExecutionException:"
-            // TODO(b/300416467): We should not deobfuscate net.
-            + " ary: eu: Exception in CronetUrlRequest: foo.bar.baz::ERR_CONNECTION_CLOSED,"
+            + " ary: eu: Exception in CronetUrlRequest: net::ERR_CONNECTION_CLOSED,"
             + " ErrorCode=5, InternalErrorCode=-100, Retryable=true");
   }