Do not rewrite methods in the parser when doing resource shrinking

Bug: 156934674
Change-Id: I54a3ed8612d5e8f15a36a37d772ce6178ae6d0b7
diff --git a/foo.txt b/foo.txt
new file mode 100644
index 0000000..d896812
--- /dev/null
+++ b/foo.txt
@@ -0,0 +1,25 @@
+Caused by: java.lang.RuntimeException: java.util.concurrent.ExecutionException: java.lang.AssertionError
+	at com.android.tools.r8.dex.a.a(SourceFile:298)
+	at com.android.tools.r8.dex.a.a(SourceFile:227)
+	at com.android.tools.r8.dex.a.a(SourceFile:217)
+	at com.android.tools.r8.dex.a.a(SourceFile:214)
+	at com.android.tools.r8.ResourceShrinker.run(ResourceShrinker.java:5)
+	at com.android.builder.dexing.R8ResourceShrinker.runResourceShrinkerAnalysis(r8ResourceShrinker.kt:33)
+	at com.android.build.gradle.tasks.ResourceUsageAnalyzer.recordClassUsages(ResourceUsageAnalyzer.java:1493)
+	at com.android.build.gradle.tasks.ResourceUsageAnalyzer.recordClassUsages(ResourceUsageAnalyzer.java:1412)
+	at com.android.build.gradle.tasks.ResourceUsageAnalyzer.recordClassUsages(ResourceUsageAnalyzer.java:1406)
+	at com.android.build.gradle.tasks.ResourceUsageAnalyzer.analyze(ResourceUsageAnalyzer.java:288)
+	at com.android.build.gradle.internal.transforms.ShrinkResourcesTransform.splitAction(ShrinkResourcesTransform.java:317)
+	at com.android.build.gradle.internal.transforms.ShrinkResourcesTransform.lambda$transform$0(ShrinkResourcesTransform.java:248)
+	at com.android.build.gradle.internal.scope.BuildElements$ExecutorBasedScheduler$transform$$inlined$forEach$lambda$1.call(BuildElements.kt:121)
+	at com.android.build.gradle.internal.scope.BuildElements$ExecutorBasedScheduler$transform$$inlined$forEach$lambda$1.call(BuildElements.kt:110)
+Caused by: java.util.concurrent.ExecutionException: java.lang.AssertionError
+	at com.android.tools.r8.utils.Y0.a(SourceFile:50)
+	at com.android.tools.r8.dex.a.a(SourceFile:278)
+	... 13 more
+Caused by: java.lang.AssertionError
+	at com.android.tools.r8.graph.W$b.a(SourceFile:3)
+	at com.android.tools.r8.graph.W.o0(SourceFile:6)
+	at com.android.tools.r8.dex.n.a(SourceFile:707)
+	at com.android.tools.r8.dex.n.a(SourceFile:989)
+	at com.android.tools.r8.dex.a$a.a(SourceFile:90)
diff --git a/src/main/java/com/android/tools/r8/ResourceShrinker.java b/src/main/java/com/android/tools/r8/ResourceShrinker.java
index 0affffd..86859f7 100644
--- a/src/main/java/com/android/tools/r8/ResourceShrinker.java
+++ b/src/main/java/com/android/tools/r8/ResourceShrinker.java
@@ -102,7 +102,9 @@
 
     @Override
     InternalOptions getInternalOptions() {
-      return new InternalOptions();
+      InternalOptions internalOptions = new InternalOptions();
+      internalOptions.isRunningDeprecatedResourceShrinker = true;
+      return internalOptions;
     }
   }
 
diff --git a/src/main/java/com/android/tools/r8/dex/DexParser.java b/src/main/java/com/android/tools/r8/dex/DexParser.java
index 2e37abb..4dba5c6 100644
--- a/src/main/java/com/android/tools/r8/dex/DexParser.java
+++ b/src/main/java/com/android/tools/r8/dex/DexParser.java
@@ -668,7 +668,9 @@
               annotationIterator.getNextFor(method),
               parameterAnnotationsIterator.getNextFor(method),
               code);
-      if (accessFlags.isAbstract() && ensureNonAbstract) {
+      if (accessFlags.isAbstract()
+          && ensureNonAbstract
+          && !options.isRunningDeprecatedResourceShrinker) {
         accessFlags.unsetAbstract();
         encodedMethod =
             options.isGeneratingClassFiles()
diff --git a/src/main/java/com/android/tools/r8/utils/InternalOptions.java b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
index 9ebe673..997d4e9 100644
--- a/src/main/java/com/android/tools/r8/utils/InternalOptions.java
+++ b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
@@ -482,6 +482,9 @@
   // to disable the check that the build makes sense for multi-dexing.
   public boolean enableMainDexListCheck = true;
 
+  // TODO(b/156934674): Remove when resource shrinker is removed.
+  public boolean isRunningDeprecatedResourceShrinker = false;
+
   private final boolean enableTreeShaking;
   private final boolean enableMinification;