Fix incorrect R8 warning
Fixes: b/433451526
Change-Id: Icd6ee24c184ec2c79bb5c9c611687b458ff565a7
diff --git a/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java b/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java
index 78cec87..584e8cd 100644
--- a/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java
+++ b/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java
@@ -2330,7 +2330,9 @@
}
// Check that start/end angles are matched, and *only* used for well-formed wildcard
// backreferences (e.g. '<1>', but not '<<1>>', '<<*>>' or '>1<').
- return !(angleStartCount == angleEndCount && angleStartCount == wildcards.size());
+ long backreferenceCount =
+ wildcards.stream().filter(ProguardWildcard::isBackReference).count();
+ return !(angleStartCount == angleEndCount && angleStartCount == backreferenceCount);
}
return false;
}
diff --git a/src/test/java/com/android/tools/r8/shaking/ProguardConfigurationParserTest.java b/src/test/java/com/android/tools/r8/shaking/ProguardConfigurationParserTest.java
index fbcdad8..7c0c5f9 100644
--- a/src/test/java/com/android/tools/r8/shaking/ProguardConfigurationParserTest.java
+++ b/src/test/java/com/android/tools/r8/shaking/ProguardConfigurationParserTest.java
@@ -2368,8 +2368,7 @@
ProguardConfigurationParser parser =
new ProguardConfigurationParser(new DexItemFactory(), reporter);
parser.parse(proguardConfig);
- assertEquals(1, handler.warnings.size());
- checkDiagnostics(handler.warnings, 0, proguardConfig, 3, 10, "The type \"<1>$*\" is");
+ assertEquals(0, handler.warnings.size());
}
private void checkRulesSourceSnippet(List<String> sourceRules) {