diff --git a/src/main/java/com/android/tools/r8/R8Command.java b/src/main/java/com/android/tools/r8/R8Command.java
index 89a0826..903a9bd 100644
--- a/src/main/java/com/android/tools/r8/R8Command.java
+++ b/src/main/java/com/android/tools/r8/R8Command.java
@@ -784,6 +784,24 @@
       }
     }
 
+    private void validateProguardConfiguration(
+        ProguardConfiguration configuration, ProguardConfigurationParserOptions parserOptions) {
+      Reporter reporter = getReporter();
+      if (!parserOptions.isKeepRuntimeInvisibleAnnotationsEnabled()) {
+        if (configuration.getKeepAttributes().runtimeInvisibleAnnotations
+            || configuration.getKeepAttributes().runtimeInvisibleParameterAnnotations
+            || configuration.getKeepAttributes().runtimeInvisibleTypeAnnotations) {
+          throw fatalError(
+              new StringDiagnostic("Illegal attempt to keep runtime invisible annotations"));
+        }
+      }
+      if (partialCompilationConfiguration.isEnabled()) {
+        if (configuration.isProtoShrinkingEnabled()) {
+          reporter.error("Partial shrinking does not support -shrinkunusedprotofields");
+        }
+      }
+    }
+
     private boolean hasMainDexList() {
       return getAppBuilder().hasMainDexList();
     }
@@ -919,14 +937,7 @@
       // TODO(b/248408342): Remove this and parse annotations as part of R8 root-set & enqueuer.
       extractKeepAnnotationRules(parser);
       ProguardConfiguration configuration = configurationBuilder.build();
-      if (!parserOptions.isKeepRuntimeInvisibleAnnotationsEnabled()) {
-        if (configuration.getKeepAttributes().runtimeInvisibleAnnotations
-            || configuration.getKeepAttributes().runtimeInvisibleParameterAnnotations
-            || configuration.getKeepAttributes().runtimeInvisibleTypeAnnotations) {
-          throw fatalError(
-              new StringDiagnostic("Illegal attempt to keep runtime invisible annotations"));
-        }
-      }
+      validateProguardConfiguration(configuration, parserOptions);
       return configuration;
     }
 
