Use index instead of iterator when cloning in field minification

Bug: 131382276
Change-Id: I201f7ac46bf3c40817835b64baf02770d4f73417
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 d31d0bb..7916e8a 100644
--- a/src/main/java/com/android/tools/r8/naming/FieldNamingState.java
+++ b/src/main/java/com/android/tools/r8/naming/FieldNamingState.java
@@ -15,7 +15,7 @@
 import com.android.tools.r8.naming.FieldNamingState.InternalState;
 import com.android.tools.r8.utils.StringUtils;
 import java.util.IdentityHashMap;
-import java.util.Iterator;
+import java.util.List;
 import java.util.Map;
 
 public class FieldNamingState extends FieldNamingStateBase<InternalState> implements Cloneable {
@@ -84,15 +84,15 @@
 
   class InternalState implements Cloneable {
 
-    private final Iterator<String> dictionaryIterator;
+    private int dictionaryIndex;
     private int nextNameIndex;
 
     public InternalState() {
-      this(1, appView.options().getProguardConfiguration().getObfuscationDictionary().iterator());
+      this(1, 0);
     }
 
-    public InternalState(int nextNameIndex, Iterator<String> dictionaryIterator) {
-      this.dictionaryIterator = dictionaryIterator;
+    public InternalState(int nextNameIndex, int dictionaryIndex) {
+      this.dictionaryIndex = dictionaryIndex;
       this.nextNameIndex = nextNameIndex;
     }
 
@@ -106,8 +106,10 @@
     }
 
     private DexString nextNameAccordingToStrategy(DexField field) {
-      if (!strategy.bypassDictionary() && dictionaryIterator.hasNext()) {
-        return appView.dexItemFactory().createString(dictionaryIterator.next());
+      List<String> dictionary =
+          appView.options().getProguardConfiguration().getObfuscationDictionary();
+      if (!strategy.bypassDictionary() && dictionaryIndex < dictionary.size()) {
+        return appView.dexItemFactory().createString(dictionary.get(dictionaryIndex++));
       } else {
         return strategy.next(field, this);
       }
@@ -121,7 +123,7 @@
 
     @Override
     public InternalState clone() {
-      return new InternalState(nextNameIndex, dictionaryIterator);
+      return new InternalState(nextNameIndex, dictionaryIndex);
     }
   }
 }
diff --git a/src/test/java/com/android/tools/r8/naming/FieldNamingObfuscationDictionaryTest.java b/src/test/java/com/android/tools/r8/naming/FieldNamingObfuscationDictionaryTest.java
index 4cfb22e..9cb616a 100644
--- a/src/test/java/com/android/tools/r8/naming/FieldNamingObfuscationDictionaryTest.java
+++ b/src/test/java/com/android/tools/r8/naming/FieldNamingObfuscationDictionaryTest.java
@@ -86,7 +86,6 @@
   }
 
   @Test
-  @Ignore("b/131382276")
   public void testInheritedNamingState()
       throws IOException, CompilationFailedException, ExecutionException {
     Path dictionary = temp.getRoot().toPath().resolve("dictionary.txt");