Version 1.4.69
Cherry-pick:
Parse optional arguments, followed by arobase include.
CL: https://r8-review.googlesource.com/c/r8/+/35421
Change-Id: Ia659412fde3307868fac604fff04d678d27de17b
diff --git a/src/main/java/com/android/tools/r8/Version.java b/src/main/java/com/android/tools/r8/Version.java
index 60da1a0..bfadd2c 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.68";
+ public static final String LABEL = "1.4.69";
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 a27f4b0..5fa6d1c 100644
--- a/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java
+++ b/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java
@@ -1338,7 +1338,7 @@
}
private boolean isOptionalArgumentGiven() {
- return !eof() && !hasNextChar('-');
+ return !eof() && !hasNextChar('-') && !hasNextChar('@');
}
private boolean acceptChar(char c) {
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 cac6dd3..2171cc4 100644
--- a/src/test/java/com/android/tools/r8/shaking/ProguardConfigurationParserTest.java
+++ b/src/test/java/com/android/tools/r8/shaking/ProguardConfigurationParserTest.java
@@ -2086,6 +2086,25 @@
}
}
+ @Test
+ public void parseOptionalArgumentsFollowedByArobaseInclude() throws Exception {
+ Path includeFile = writeTextToTempFile(
+ "-renamesourcefileattribute SRC"
+ );
+ Path proguardConfig = writeTextToTempFile(
+ "-printconfiguration",
+ "@" + includeFile.toAbsolutePath()
+ );
+ ProguardConfigurationParser parser =
+ new ProguardConfigurationParser(new DexItemFactory(), reporter);
+ parser.parse(proguardConfig);
+ verifyParserEndsCleanly();
+ ProguardConfiguration config = parser.getConfig();
+ assertTrue(config.isPrintConfiguration());
+ assertNull(config.getPrintConfigurationFile());
+ assertEquals("SRC", config.getRenameSourceFileAttribute());
+ }
+
private void testFlagWithFilenames(
String flag,
List<String> values,
@@ -2101,7 +2120,7 @@
}
@Test
- public void parseSingleFleNameOptions() {
+ public void parseSingleFileNameOptions() {
List<String> fileNames = ImmutableList.of(
"xxx",
"xxx" + File.pathSeparatorChar + "xxx");