Fail R8 partial compilation if proto optimization is enabled
Bug: b/392529669
Change-Id: I864016c04f8d690fc3bd9aefaf78375a35870a34
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;
}