Add numbers for added rewritten strings when processing kotlin stdlib

Bug: 185756596
Change-Id: I1c14dd04978bf28fccbd33dade023caa32a366cc
diff --git a/src/test/java/com/android/tools/r8/kotlin/coroutines/KotlinxCoroutinesTestRunner.java b/src/test/java/com/android/tools/r8/kotlin/coroutines/KotlinxCoroutinesTestRunner.java
index 70ae682..7f59069 100644
--- a/src/test/java/com/android/tools/r8/kotlin/coroutines/KotlinxCoroutinesTestRunner.java
+++ b/src/test/java/com/android/tools/r8/kotlin/coroutines/KotlinxCoroutinesTestRunner.java
@@ -92,7 +92,9 @@
                 "org.junit.runners.model.Statement",
                 "org.junit.runners.model.TestTimedOutException")
             .compile()
-            .inspect(inspector -> assertEqualMetadata(new CodeInspector(BASE_LIBRARY), inspector))
+            .inspect(
+                inspector ->
+                    assertEqualMetadata(new CodeInspector(BASE_LIBRARY), inspector, i -> {}))
             .writeToZip();
     Path testJar = compileTestSources(baseJar);
     runTestsInJar(testJar, baseJar);
diff --git a/src/test/java/com/android/tools/r8/kotlin/metadata/KotlinMetadataTestBase.java b/src/test/java/com/android/tools/r8/kotlin/metadata/KotlinMetadataTestBase.java
index e9324e9..8178717 100644
--- a/src/test/java/com/android/tools/r8/kotlin/metadata/KotlinMetadataTestBase.java
+++ b/src/test/java/com/android/tools/r8/kotlin/metadata/KotlinMetadataTestBase.java
@@ -15,9 +15,13 @@
 import com.android.tools.r8.TestCompileResult;
 import com.android.tools.r8.kotlin.KotlinMetadataWriter;
 import com.android.tools.r8.utils.DescriptorUtils;
+import com.android.tools.r8.utils.IntBox;
 import com.android.tools.r8.utils.codeinspector.ClassSubject;
 import com.android.tools.r8.utils.codeinspector.CodeInspector;
 import com.android.tools.r8.utils.codeinspector.FoundClassSubject;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.function.IntConsumer;
 import junit.framework.TestCase;
 import kotlinx.metadata.jvm.KotlinClassHeader;
 import kotlinx.metadata.jvm.KotlinClassMetadata;
@@ -44,7 +48,10 @@
   static final String KT_COMPARABLE = "Lkotlin/Comparable;";
 
   public void assertEqualMetadata(
-      CodeInspector originalInspector, CodeInspector rewrittenInspector) {
+      CodeInspector originalInspector,
+      CodeInspector rewrittenInspector,
+      IntConsumer addedStringsInspector) {
+    IntBox addedStrings = new IntBox();
     for (FoundClassSubject clazzSubject : originalInspector.allClasses()) {
       ClassSubject r8Clazz = rewrittenInspector.clazz(clazzSubject.getOriginalName());
       assertThat(r8Clazz, isPresent());
@@ -60,12 +67,23 @@
       TestCase.assertEquals(originalHeader.getKind(), rewrittenHeader.getKind());
       // TODO(b/154199572): Should we check for meta-data version?
       TestCase.assertEquals(originalHeader.getPackageName(), rewrittenHeader.getPackageName());
+
+      HashSet<String> originalStrings = new HashSet<>(Arrays.asList(originalHeader.getData2()));
+      HashSet<String> rewrittenStrings = new HashSet<>(Arrays.asList(rewrittenHeader.getData2()));
+      rewrittenStrings.forEach(
+          rewrittenString -> {
+            if (originalStrings.contains(rewrittenString)) {
+              return;
+            }
+            addedStrings.increment();
+          });
       // We cannot assert equality of the data since it may be ordered differently. Instead we use
       // the KotlinMetadataWriter.
       String expected = KotlinMetadataWriter.kotlinMetadataToString("", originalMetadata);
       String actual = KotlinMetadataWriter.kotlinMetadataToString("", rewrittenMetadata);
       TestCase.assertEquals(expected, actual);
     }
+    addedStringsInspector.accept(addedStrings.get());
   }
 
   public static void verifyExpectedWarningsFromKotlinReflectAndStdLib(
diff --git a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteDelegatedPropertyTest.java b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteDelegatedPropertyTest.java
index 3752a9e..12c1934 100644
--- a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteDelegatedPropertyTest.java
+++ b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteDelegatedPropertyTest.java
@@ -60,7 +60,6 @@
         .assertSuccessWithOutput(EXPECTED_MAIN);
   }
 
-
   @Test
   public void testMetadataForLib() throws Exception {
     Path outputJar =
@@ -77,7 +76,8 @@
                 inspector ->
                     assertEqualMetadata(
                         new CodeInspector(jars.getForConfiguration(kotlinc, targetVersion)),
-                        inspector))
+                        inspector,
+                        i -> {}))
             .writeToZip();
     testForJvm()
         .addRunClasspathFiles(getKotlinStdlibJar(kotlinc), getKotlinReflectJar(kotlinc))
diff --git a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewritePassThroughTest.java b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewritePassThroughTest.java
index 137d6f5..4da59e8 100644
--- a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewritePassThroughTest.java
+++ b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewritePassThroughTest.java
@@ -7,9 +7,12 @@
 import static com.android.tools.r8.ToolHelper.getKotlinAnnotationJar;
 import static com.android.tools.r8.ToolHelper.getKotlinStdlibJar;
 import static org.hamcrest.CoreMatchers.equalTo;
+import static org.junit.Assert.assertEquals;
 
+import com.android.tools.r8.KotlinCompilerTool.KotlinCompilerVersion;
 import com.android.tools.r8.KotlinTestParameters;
 import com.android.tools.r8.TestParameters;
+import com.android.tools.r8.errors.Unreachable;
 import com.android.tools.r8.shaking.ProguardKeepAttributes;
 import com.android.tools.r8.utils.codeinspector.CodeInspector;
 import java.util.Collection;
@@ -35,6 +38,18 @@
     this.parameters = parameters;
   }
 
+  public int getExpectedAddedCount() {
+    if (kotlinParameters.getCompiler().is(KotlinCompilerVersion.KOTLINC_1_3_72)) {
+      return 2441;
+    } else if (kotlinParameters.getCompiler().is(KotlinCompilerVersion.KOTLINC_1_4_20)) {
+      return 2561;
+    } else if (kotlinParameters.getCompiler().is(KotlinCompilerVersion.KOTLINC_1_5_0_M2)) {
+      return 2594;
+    } else {
+      throw new Unreachable("Should not compile in this configuration");
+    }
+  }
+
   @Test
   public void testKotlinStdLib() throws Exception {
     testForR8(parameters.getBackend())
@@ -48,6 +63,11 @@
         .assertAllWarningMessagesMatch(equalTo("Resource 'META-INF/MANIFEST.MF' already exists."))
         .inspect(
             inspector ->
-                assertEqualMetadata(new CodeInspector(getKotlinStdlibJar(kotlinc)), inspector));
+                assertEqualMetadata(
+                    new CodeInspector(getKotlinStdlibJar(kotlinc)),
+                    inspector,
+                    addedStrings -> {
+                      assertEquals(getExpectedAddedCount(), addedStrings);
+                    }));
   }
 }