Fix kotlin.Metadata rewriting for types in D8 part of R8 partial

Bug: b/409260720
Change-Id: I1e853cbdcb4dd196f8378ce8e6da4a17a2b2cb48
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataWriter.java b/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataWriter.java
index 9509c98..8ff5684 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataWriter.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataWriter.java
@@ -298,7 +298,7 @@
                 .append(value)
                 .append(",")
                 .append(LINE_SEPARATOR));
-    sb.append(indent).append("]");
+    sb.append(indent).append("]").append(LINE_SEPARATOR);
   }
 
   public static void appendKmClass(String indent, StringBuilder sb, KmClass kmClass) {
@@ -611,7 +611,7 @@
               nextIndent ->
                   appendKmList(
                       nextIndent,
-                      "KmAnnotion",
+                      "KmAnnotation",
                       sb,
                       JvmExtensionsKt.getAnnotations(kmType),
                       (nextNextIndent, kmAnnotation) ->
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinTypeReference.java b/src/main/java/com/android/tools/r8/kotlin/KotlinTypeReference.java
index 92b8c20..196b6ba 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinTypeReference.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinTypeReference.java
@@ -164,8 +164,8 @@
     }
     DexType rewrittenType =
         appView.graphLens().lookupClassType(type, appView.getKotlinMetadataLens());
-    if (appView.appInfo().hasLiveness()
-        && !appView.withLiveness().appInfo().isNonProgramTypeOrLiveProgramType(rewrittenType)) {
+    if (appView.hasLiveness()
+        && !appView.appInfoWithLiveness().isNonProgramTypeOrLiveProgramType(rewrittenType)) {
       return null;
     }
     return rewrittenType;
diff --git a/src/main/java/com/android/tools/r8/shaking/AppInfoWithLiveness.java b/src/main/java/com/android/tools/r8/shaking/AppInfoWithLiveness.java
index 110abf1..b9dee9f 100644
--- a/src/main/java/com/android/tools/r8/shaking/AppInfoWithLiveness.java
+++ b/src/main/java/com/android/tools/r8/shaking/AppInfoWithLiveness.java
@@ -585,6 +585,12 @@
     if (prunedTypes.contains(type)) {
       return false;
     }
+    R8PartialSubCompilationConfiguration partialCompilationConfiguration =
+        options().partialSubCompilationConfiguration;
+    if (partialCompilationConfiguration != null
+        && partialCompilationConfiguration.asR8().hasD8DefinitionFor(type)) {
+      return true;
+    }
     DexClass clazz = definitionFor(type);
     return clazz == null || !clazz.isProgramClass();
   }
diff --git a/src/test/java/com/android/tools/r8/partial/kotlin/PartialCompilationKotlinMetadataTest.java b/src/test/java/com/android/tools/r8/partial/kotlin/PartialCompilationKotlinMetadataTest.java
index 1e62fc8..356ff33 100644
--- a/src/test/java/com/android/tools/r8/partial/kotlin/PartialCompilationKotlinMetadataTest.java
+++ b/src/test/java/com/android/tools/r8/partial/kotlin/PartialCompilationKotlinMetadataTest.java
@@ -6,7 +6,6 @@
 import static com.android.tools.r8.utils.codeinspector.Matchers.isAbsent;
 import static com.android.tools.r8.utils.codeinspector.Matchers.isPresent;
 import static org.hamcrest.CoreMatchers.containsString;
-import static org.hamcrest.CoreMatchers.not;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.junit.Assert.assertNotNull;
 
@@ -97,8 +96,8 @@
     assertNotNull(kotlinClassMetadata);
     String metadata = KotlinMetadataWriter.kotlinMetadataToString("", kotlinClassMetadata);
     assertThat(metadata, containsString(greetingClass.getFinalBinaryName()));
-    // TODO(b/409260720): Both Message1 and Message2 should be referenced.
-    assertThat(metadata, not(containsString(message1Class.getFinalBinaryName())));
+    // TODO(b/409260720): Message2 should be referenced.
+    assertThat(metadata, containsString(message1Class.getFinalBinaryName()));
   }
 
   private static KotlinCompileMemoizer compiledJars =