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");