Support for overriding new -keepattributes behavior This adds a system property for temporarily being able to tweak parsing of -keepattributes rules such that wildcards can be used to keep runtime invisible annotations. Bug: b/492169125 Change-Id: I2ed4a15e14eff7d452418c9e732ac7af872f66e0
diff --git a/src/main/java/com/android/tools/r8/R8Command.java b/src/main/java/com/android/tools/r8/R8Command.java index 6fccf6d..28f76f7 100644 --- a/src/main/java/com/android/tools/r8/R8Command.java +++ b/src/main/java/com/android/tools/r8/R8Command.java
@@ -935,7 +935,8 @@ ProguardConfigurationParserOptions parserOptions = parserOptionsBuilder .setCanMatchRuntimeInvisibleAnnotationsWithWildcards( - getProgramConsumer() instanceof ClassFileConsumer) + getProgramConsumer() instanceof ClassFileConsumer + && parserOptionsBuilder.getCanMatchRuntimeInvisibleAnnotationsWithWildcards()) .setForceProguardCompatibility(forceProguardCompatibility) .build(); ProguardConfiguration.Builder configurationBuilder =
diff --git a/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParserOptions.java b/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParserOptions.java index 80ea398..0289a30 100644 --- a/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParserOptions.java +++ b/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParserOptions.java
@@ -59,6 +59,9 @@ private boolean forceProguardCompatibility = false; public Builder readEnvironment() { + canMatchRuntimeInvisibleAnnotationsWithWildcards = + parseSystemPropertyOrDefault( + "com.android.tools.r8.canMatchRuntimeInvisibleAnnotationsWithWildcards", true); enableLegacyFullModeForKeepRules = parseSystemPropertyOrDefault( "com.android.tools.r8.enableLegacyFullModeForKeepRules", true); @@ -70,6 +73,10 @@ return this; } + public boolean getCanMatchRuntimeInvisibleAnnotationsWithWildcards() { + return canMatchRuntimeInvisibleAnnotationsWithWildcards; + } + public Builder setCanMatchRuntimeInvisibleAnnotationsWithWildcards( boolean canMatchRuntimeInvisibleAnnotationsWithWildcards) { this.canMatchRuntimeInvisibleAnnotationsWithWildcards =