Remove some of the warnings on patterns in rules
Such warnings should be in lint or similar tools. The current
implementation is too simple and open for false negatives.
Bug: b/433451526
Change-Id: I69dfa2268aeb808ae0bb7bb06b4e98b1ca6cc5b9
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 584e8cd..2abdb49 100644
--- a/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java
+++ b/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java
@@ -1406,12 +1406,6 @@
ProguardTypeMatcher.create(first, ClassOrType.TYPE, dexItemFactory));
ruleBuilder.setArguments(parseArgumentList());
} else {
- if (first.hasUnusualCharacters()) {
- warnUnusualCharacters("type", first.pattern, "field", firstStart);
- }
- if (second.hasUnusualCharacters()) {
- warnUnusualCharacters("field name", second.pattern, "field", secondStart);
- }
ruleBuilder.setRuleType(ProguardMemberType.FIELD);
ruleBuilder.setName(second);
ruleBuilder
@@ -2240,16 +2234,6 @@
"Option -" + optionName + " overrides -" + victim, origin, getPosition(start)));
}
- private void warnUnusualCharacters(
- String kind, String pattern, String ruleType, TextPosition start) {
- reporter.warning(new StringDiagnostic(
- "The " + kind + " \"" + pattern + "\" is used in a " + ruleType + " rule. The "
- + "characters in this " + kind + " are legal for the JVM, "
- + "but unlikely to originate from a source language. "
- + "Maybe this is not the rule you are looking for.",
- origin, getPosition(start)));
- }
-
private void infoIgnoringModifier(String modifier, TextPosition start) {
reporter.info(new StringDiagnostic(
"Ignoring modifier: " + modifier, origin, getPosition(start)));
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 7c0c5f9..31b2154 100644
--- a/src/test/java/com/android/tools/r8/shaking/ProguardConfigurationParserTest.java
+++ b/src/test/java/com/android/tools/r8/shaking/ProguardConfigurationParserTest.java
@@ -2043,7 +2043,17 @@
ProguardConfigurationParser parser =
new ProguardConfigurationParser(new DexItemFactory(), reporter);
parser.parse(proguardConfig);
- checkDiagnostics(handler.warnings, proguardConfig, 3, 7, "The field name \"id<<*>>\" is");
+ verifyParserEndsCleanly();
+ }
+
+ @Test
+ public void parse_if_closeBracketBeforeOpenBracket_inMemberName() throws Exception {
+ Path proguardConfig =
+ writeTextToTempFile("-if class **$R**", "-keep class **D<2> {", " int id>1<;", "}");
+ ProguardConfigurationParser parser =
+ new ProguardConfigurationParser(new DexItemFactory(), reporter);
+ parser.parse(proguardConfig);
+ verifyParserEndsCleanly();
}
@Test
@@ -2323,7 +2333,7 @@
ProguardConfigurationParser parser =
new ProguardConfigurationParser(new DexItemFactory(), reporter);
parser.parse(proguardConfig);
- checkDiagnostics(handler.warnings, proguardConfig, 2, 5, "The field name \"<fields>\" is");
+ verifyParserEndsCleanly();
}
@Test
@@ -2350,11 +2360,7 @@
ProguardConfigurationParser parser =
new ProguardConfigurationParser(new DexItemFactory(), reporter);
parser.parse(proguardConfig);
- assertEquals(4, handler.warnings.size());
- checkDiagnostics(handler.warnings, 0, proguardConfig, 2, 3, "The type \"<public\" is");
- checkDiagnostics(handler.warnings, 1, proguardConfig, 2, 11, "The field name \"methods>\" is");
- checkDiagnostics(handler.warnings, 2, proguardConfig, 3, 3, "The type \"<public\" is");
- checkDiagnostics(handler.warnings, 3, proguardConfig, 3, 11, "The field name \"fields>\" is");
+ verifyParserEndsCleanly();
}
@Test