Version 1.5.47


Cherry-pick: Ignore modfier includecode
CL: https://r8-review.googlesource.com/c/r8/+/39414

Bug: 134838460
Change-Id: Iaf77ea06608253e9969c616046649199f4497d99
diff --git a/src/main/java/com/android/tools/r8/Version.java b/src/main/java/com/android/tools/r8/Version.java
index b58b7b3..b3d7797 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.5.46";
+  public static final String LABEL = "1.5.47";
 
   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 bc3b2ff..7134bae 100644
--- a/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java
+++ b/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java
@@ -819,6 +819,7 @@
       skipWhitespace();
       while (acceptChar(',')) {
         skipWhitespace();
+        TextPosition start = getPosition();
         if (acceptString("allow")) {
           if (acceptString("shrinking")) {
             builder.getModifiersBuilder().setAllowsShrinking(true);
@@ -829,6 +830,8 @@
           }
         } else if (acceptString("includedescriptorclasses")) {
           builder.getModifiersBuilder().setIncludeDescriptorClasses(true);
+        } else if (acceptString("includecode")) {
+          infoIgnoringModifier("includecode", start);
         }
         skipWhitespace();
       }
@@ -1879,6 +1882,11 @@
           origin, getPosition(start)));
     }
 
+    private void infoIgnoringModifier(String modifier, TextPosition start) {
+      reporter.info(new StringDiagnostic(
+          "Ignoring modifier: " + modifier, origin, getPosition(start)));
+    }
+
     private Position getPosition(TextPosition start) {
       if (start.getOffset() == position) {
         return 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 001e3201..14bc814 100644
--- a/src/test/java/com/android/tools/r8/shaking/ProguardConfigurationParserTest.java
+++ b/src/test/java/com/android/tools/r8/shaking/ProguardConfigurationParserTest.java
@@ -2572,4 +2572,15 @@
               + "The negation character can only be used to negate access flags");
     }
   }
+
+  @Test
+  public void parseIncludeCode() throws Exception {
+    ProguardConfigurationParser parser;
+    parser = new ProguardConfigurationParser(new DexItemFactory(), reporter);
+    Path proguardConfig = writeTextToTempFile("-keep,includecode class A { method(); }");
+    parser.parse(proguardConfig);
+    assertEquals(1, parser.getConfig().getRules().size());
+    assertEquals(1, handler.infos.size());
+    checkDiagnostics(handler.infos, proguardConfig, 1, 7, "Ignoring modifier", "includecode");
+  }
 }