[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());
}