Field name minifier fix for apply mapping
Change-Id: Ib69a035043e5f6810b8f23c2a95cdaf85df362c4
diff --git a/src/main/java/com/android/tools/r8/naming/FieldNameMinifier.java b/src/main/java/com/android/tools/r8/naming/FieldNameMinifier.java
index 2130b37..06c2909 100644
--- a/src/main/java/com/android/tools/r8/naming/FieldNameMinifier.java
+++ b/src/main/java/com/android/tools/r8/naming/FieldNameMinifier.java
@@ -85,7 +85,7 @@
for (DexClass clazz : appView.appInfo().app().asDirect().allClasses()) {
ReservedFieldNamingState reservedNames = null;
for (DexEncodedField field : clazz.fields()) {
- if (clazz.isLibraryClass() || appView.rootSet().noObfuscation.contains(field.field)) {
+ if (shouldReserveName(clazz, field)) {
if (reservedNames == null) {
reservedNames = getOrCreateReservedFieldNamingState(clazz.type);
}
@@ -109,6 +109,17 @@
propagateReservedFieldNamesUpwards();
}
+ private boolean shouldReserveName(DexClass clazz, DexEncodedField field) {
+ if (clazz.isLibraryClass()) {
+ return true;
+ }
+ if (!appView.options().getProguardConfiguration().hasApplyMappingFile()
+ && appView.rootSet().noObfuscation.contains(field.field)) {
+ return true;
+ }
+ return false;
+ }
+
private void propagateReservedFieldNamesUpwards() {
BottomUpClassHierarchyTraversal.forProgramClasses(appView)
.visit(
diff --git a/src/main/java/com/android/tools/r8/naming/FieldNamingState.java b/src/main/java/com/android/tools/r8/naming/FieldNamingState.java
index acb09f0..dce278b 100644
--- a/src/main/java/com/android/tools/r8/naming/FieldNamingState.java
+++ b/src/main/java/com/android/tools/r8/naming/FieldNamingState.java
@@ -91,13 +91,7 @@
private int nextNameIndex;
public InternalState() {
- this(1);
- }
-
- public InternalState(int nextNameIndex) {
- this(
- nextNameIndex,
- appView.options().getProguardConfiguration().getObfuscationDictionary().iterator());
+ this(1, appView.options().getProguardConfiguration().getObfuscationDictionary().iterator());
}
public InternalState(int nextNameIndex, Iterator<String> dictionaryIterator) {