Assert original kotlin metadata only returned if no rewrites

Bug: 189405754
Change-Id: Ib9ce52113d4772162c7d37abfa9ce54b41143be0
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinDeclarationContainerInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinDeclarationContainerInfo.java
index eb654b5..1b928d9 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinDeclarationContainerInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinDeclarationContainerInfo.java
@@ -179,7 +179,11 @@
     }
     for (DexEncodedMethod method : clazz.methods()) {
       if (method.getKotlinInfo().isFunction()) {
-        method.getKotlinInfo().asFunction().rewrite(functionProvider, method, appView, namingLens);
+        rewritten |=
+            method
+                .getKotlinInfo()
+                .asFunction()
+                .rewrite(functionProvider, method, appView, namingLens);
         continue;
       }
       KotlinPropertyInfo kotlinPropertyInfo = method.getKotlinInfo().asProperty();
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataRewriter.java b/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataRewriter.java
index d22a2b4..a094a88 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataRewriter.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataRewriter.java
@@ -3,8 +3,10 @@
 // BSD-style license that can be found in the LICENSE file.
 package com.android.tools.r8.kotlin;
 
+import static com.android.tools.r8.kotlin.KotlinClassMetadataReader.toKotlinClassMetadata;
 import static com.android.tools.r8.kotlin.KotlinMetadataUtils.getInvalidKotlinInfo;
 import static com.android.tools.r8.kotlin.KotlinMetadataUtils.getNoKotlinInfo;
+import static com.android.tools.r8.kotlin.KotlinMetadataWriter.kotlinMetadataToString;
 
 import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.DexAnnotation;
@@ -160,6 +162,15 @@
       // TODO(b/185756596): Remove when special handling is no longer needed.
       if (!kotlinClassHeader.getSecond() && !appView.enableWholeProgramOptimizations()) {
         // No rewrite occurred and the data is the same as before.
+        assert appView.checkForTesting(
+            () ->
+                verifyRewrittenMetadataIsEquivalent(
+                    clazz.annotations().getFirstMatching(factory.kotlinMetadataType),
+                    createKotlinMetadataAnnotation(
+                        kotlinClassHeader.getFirst(),
+                        kotlinInfo.getPackageName(),
+                        getMaxVersion(METADATA_VERSION_1_4, kotlinInfo.getMetadataVersion()),
+                        writeMetadataFieldInfo)));
         return;
       }
       DexAnnotation newMeta =
@@ -177,6 +188,16 @@
     }
   }
 
+  private boolean verifyRewrittenMetadataIsEquivalent(
+      DexAnnotation original, DexAnnotation rewritten) {
+    String originalMetadata =
+        kotlinMetadataToString("", toKotlinClassMetadata(kotlin, original.annotation));
+    String rewrittenMetadata =
+        kotlinMetadataToString("", toKotlinClassMetadata(kotlin, rewritten.annotation));
+    assert originalMetadata.equals(rewrittenMetadata) : "The metadata should be equivalent";
+    return true;
+  }
+
   private boolean kotlinMetadataFieldExists(
       DexClass kotlinMetadata, AppView<?> appView, DexString fieldName) {
     if (!appView.appInfo().hasLiveness()) {
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinTypeProjectionInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinTypeProjectionInfo.java
index 3f83e53..8fe760b 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinTypeProjectionInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinTypeProjectionInfo.java
@@ -42,10 +42,10 @@
       NamingLens namingLens) {
     if (isStarProjection()) {
       starProjectionProvider.get();
+      return false;
     } else {
-      typeInfo.rewrite(flags -> visitorProvider.get(flags, variance), appView, namingLens);
+      return typeInfo.rewrite(flags -> visitorProvider.get(flags, variance), appView, namingLens);
     }
-    return false;
   }
 
   @Override