Compute max nameCount in NamingState#incrementAndGet()

This is a workaround for a bug that causes the nameCount of a naming state to be less than the nameCount of the corresponding parent naming state.

Bug: 127932803
Change-Id: I93d3ced4962861fdcf9ef9168e61341a173d62ec
diff --git a/src/main/java/com/android/tools/r8/naming/NamingState.java b/src/main/java/com/android/tools/r8/naming/NamingState.java
index 298144ef..4a4be05 100644
--- a/src/main/java/com/android/tools/r8/naming/NamingState.java
+++ b/src/main/java/com/android/tools/r8/naming/NamingState.java
@@ -194,6 +194,17 @@
     }
 
     public int incrementAndGet() {
+      int parentNameCount = 0;
+      InternalState tmp = parentInternalState;
+      while (tmp != null) {
+        if (tmp.nameCount > parentNameCount) {
+          parentNameCount = tmp.nameCount;
+        }
+        tmp = tmp.parentInternalState;
+      }
+      if (parentNameCount > nameCount) {
+        nameCount = parentNameCount;
+      }
       return nameCount++;
     }
 
diff --git a/src/test/java/com/android/tools/r8/naming/FieldMinificationCollisionTest.java b/src/test/java/com/android/tools/r8/naming/FieldMinificationCollisionTest.java
index 1727bd6..7b89f71 100644
--- a/src/test/java/com/android/tools/r8/naming/FieldMinificationCollisionTest.java
+++ b/src/test/java/com/android/tools/r8/naming/FieldMinificationCollisionTest.java
@@ -5,8 +5,8 @@
 package com.android.tools.r8.naming;
 
 import static com.android.tools.r8.utils.codeinspector.Matchers.isPresent;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertThat;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.Assert.assertNotEquals;
 
 import com.android.tools.r8.NeverClassInline;
 import com.android.tools.r8.NeverInline;
@@ -42,8 +42,7 @@
     FieldSubject f3Subject = inspector.clazz(C.class).uniqueFieldWithName("f3");
     assertThat(f3Subject, isPresent());
 
-    // TODO(b/127932803): f1 and f3 should not be given the same name.
-    assertEquals(f1Subject.getFinalName(), f3Subject.getFinalName());
+    assertNotEquals(f1Subject.getFinalName(), f3Subject.getFinalName());
   }
 
   static class TestClass {