Version 1.4.26
Merge: Fix tests for -optimizations
CL: https://r8-review.googlesource.com/c/r8/+/33106
Merge: Inform that -optimizations directive is ignored
CL: https://r8-review.googlesource.com/c/r8/+/33102
Bug: 122998650
Change-Id: I6e7f4e1b9e50ce5bf7e2d225152540c4b30630ce
diff --git a/src/main/java/com/android/tools/r8/Version.java b/src/main/java/com/android/tools/r8/Version.java
index 6c27fb1..128245f 100644
--- a/src/main/java/com/android/tools/r8/Version.java
+++ b/src/main/java/com/android/tools/r8/Version.java
@@ -11,7 +11,7 @@
// This field is accessed from release scripts using simple pattern matching.
// Therefore, changing this field could break our release scripts.
- public static final String LABEL = "1.4.25";
+ public static final String LABEL = "1.4.26";
private Version() {
}
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 47d3743..652217a 100644
--- a/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java
+++ b/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java
@@ -218,7 +218,7 @@
}
TextPosition optionStart = getPosition();
expectChar('-');
- if (parseIgnoredOption() ||
+ if (parseIgnoredOption(optionStart) ||
parseIgnoredOptionAndWarn(optionStart) ||
parseUnsupportedOptionAndErr(optionStart)) {
// Intentionally left empty.
@@ -438,13 +438,13 @@
return true;
}
- private boolean parseIgnoredOption() {
+ private boolean parseIgnoredOption(TextPosition optionStart) {
return Iterables.any(IGNORED_SINGLE_ARG_OPTIONS, this::skipOptionWithSingleArg)
|| Iterables.any(IGNORED_OPTIONAL_SINGLE_ARG_OPTIONS,
this::skipOptionWithOptionalSingleArg)
|| Iterables.any(IGNORED_FLAG_OPTIONS, this::skipFlag)
|| Iterables.any(IGNORED_CLASS_DESCRIPTOR_OPTIONS, this::skipOptionWithClassSpec)
- || parseOptimizationOption();
+ || parseOptimizationOption(optionStart);
}
private void parseInclude() throws ProguardRuleParserException {
@@ -533,10 +533,11 @@
}
- private boolean parseOptimizationOption() {
+ private boolean parseOptimizationOption(TextPosition optionStart) {
if (!acceptString("optimizations")) {
return false;
}
+ warnIgnoringOptions("optimizations", optionStart);
do {
skipWhitespace();
skipOptimizationName();
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 ff84486..e99462e 100644
--- a/src/test/java/com/android/tools/r8/shaking/ProguardConfigurationParserTest.java
+++ b/src/test/java/com/android/tools/r8/shaking/ProguardConfigurationParserTest.java
@@ -1053,8 +1053,10 @@
"-optimizations ! xxx, ! yyy",
"-optimizations !code/simplification/advanced,code/simplification/*")) {
reset();
- parser.parse(createConfigurationForTesting(ImmutableList.of(option)));
- verifyParserEndsCleanly();
+ Path proguardConfig = writeTextToTempFile(option);
+ parser.parse(proguardConfig);
+ assertEquals(1, handler.warnings.size());
+ checkDiagnostics(handler.warnings, proguardConfig, 1, 1, "Ignoring", "-optimizations");
}
}
@@ -1070,15 +1072,35 @@
ProguardConfigurationParser parser =
new ProguardConfigurationParser(new DexItemFactory(), reporter);
parser.parse(proguardConfig);
- checkDiagnostics(handler.warnings, proguardConfig, 2, 1,
- "Ignoring", "-optimizationpasses");
- Position p = handler.warnings.get(0).getPosition();
- assertTrue(p instanceof TextRange);
- TextRange r = (TextRange) p;
- assertEquals(2, r.getStart().getLine());
- assertEquals(1, r.getStart().getColumn());
- assertEquals(2, r.getEnd().getLine());
- assertEquals(22, r.getEnd().getColumn());
+ assertEquals(3, handler.warnings.size());
+
+ checkDiagnostics(handler.warnings, 0, proguardConfig, 1, 1, "Ignoring", "-optimizations");
+ Position p1 = handler.warnings.get(0).getPosition();
+ assertTrue(p1 instanceof TextRange);
+ TextRange r1 = (TextRange) p1;
+ assertEquals(1, r1.getStart().getLine());
+ assertEquals(1, r1.getStart().getColumn());
+ assertEquals(1, r1.getEnd().getLine());
+ assertEquals(15, r1.getEnd().getColumn());
+
+ checkDiagnostics(
+ handler.warnings, 1, proguardConfig, 2, 1, "Ignoring", "-optimizationpasses");
+ Position p2 = handler.warnings.get(1).getPosition();
+ assertTrue(p2 instanceof TextRange);
+ TextRange r2 = (TextRange) p2;
+ assertEquals(2, r2.getStart().getLine());
+ assertEquals(1, r2.getStart().getColumn());
+ assertEquals(2, r2.getEnd().getLine());
+ assertEquals(22, r2.getEnd().getColumn());
+
+ checkDiagnostics(handler.warnings, 2, proguardConfig, 3, 1, "Ignoring", "-optimizations");
+ Position p3 = handler.warnings.get(2).getPosition();
+ assertTrue(p3 instanceof TextRange);
+ TextRange r3 = (TextRange) p3;
+ assertEquals(3, r3.getStart().getLine());
+ assertEquals(1, r3.getStart().getColumn());
+ assertEquals(3, r3.getEnd().getLine());
+ assertEquals(15, r3.getEnd().getColumn());
}
}