[JPS] Allow writing the subtypes map in compiler-maps-only mode

^KTIJ-30296 Fixed
diff --git a/build-common/src/org/jetbrains/kotlin/incremental/AbstractIncrementalCache.kt b/build-common/src/org/jetbrains/kotlin/incremental/AbstractIncrementalCache.kt
index f91f80f..df322be 100644
--- a/build-common/src/org/jetbrains/kotlin/incremental/AbstractIncrementalCache.kt
+++ b/build-common/src/org/jetbrains/kotlin/incremental/AbstractIncrementalCache.kt
@@ -128,7 +128,7 @@
      *
      * The `srcFile` argument may be `null` (e.g., if we are processing .class files in jars where source files are not available).
      */
-    protected fun addToClassStorage(classProtoData: ClassProtoData, srcFile: File?) {
+    protected fun addToClassStorage(classProtoData: ClassProtoData, srcFile: File?, useCompilerMapsOnly: Boolean = false) {
         val (proto, nameResolver) = classProtoData
 
         val supertypes = proto.supertypes(TypeTable(proto.typeTable))
@@ -143,11 +143,17 @@
         removedSupertypes.forEach { subtypesMap.removeValues(it, setOf(child)) }
 
         supertypesMap[child] = parents
+        if (useCompilerMapsOnly) return
+
         srcFile?.let { classFqNameToSourceMap[child] = it }
         classAttributesMap[child] = ICClassesAttributes(ProtoBuf.Modality.SEALED == Flags.MODALITY.get(proto.flags))
     }
 
-    protected fun removeAllFromClassStorage(removedClasses: Collection<FqName>, changesCollector: ChangesCollector) {
+    protected fun removeAllFromClassStorage(
+        removedClasses: Collection<FqName>,
+        changesCollector: ChangesCollector,
+        useCompilerMapsOnly: Boolean = false,
+    ) {
         if (removedClasses.isEmpty()) return
 
         val removedFqNames = removedClasses.toSet()
@@ -179,6 +185,8 @@
             }
         }
 
+        if (useCompilerMapsOnly) return
+
         removedFqNames.forEach {
             classFqNameToSourceMap.remove(it)
             classAttributesMap.remove(it)
diff --git a/build-common/src/org/jetbrains/kotlin/incremental/IncrementalJvmCache.kt b/build-common/src/org/jetbrains/kotlin/incremental/IncrementalJvmCache.kt
index da55089..97ee4f7 100644
--- a/build-common/src/org/jetbrains/kotlin/incremental/IncrementalJvmCache.kt
+++ b/build-common/src/org/jetbrains/kotlin/incremental/IncrementalJvmCache.kt
@@ -197,9 +197,7 @@
                 }
             }
             KotlinClassHeader.Kind.CLASS -> {
-                if (!icContext.useCompilerMapsOnly) {
-                    addToClassStorage(kotlinClassInfo.protoData as ClassProtoData, sourceFiles?.let { sourceFiles.single() })
-                }
+                addToClassStorage(kotlinClassInfo.protoData as ClassProtoData, sourceFiles?.let { sourceFiles.single() }, icContext.useCompilerMapsOnly)
 
                 protoMap.process(kotlinClassInfo, changesCollector)
 
@@ -257,10 +255,8 @@
             javaSourcesProtoMap.process(jvmClassName, serializedJavaClass, collector)
         }
         source?.let { sourceToClassesMap.add(source, jvmClassName) }
-        if (!icContext.useCompilerMapsOnly) {
-            addToClassStorage(serializedJavaClass.toProtoData(), source)
-//        collector.addJavaProto(ClassProtoData(proto, nameResolver))
-        }
+        addToClassStorage(serializedJavaClass.toProtoData(), source, icContext.useCompilerMapsOnly)
+
         dirtyOutputClassesMap.notDirty(jvmClassName)
     }
 
@@ -317,9 +313,8 @@
             }
         }
 
-        if (!icContext.useCompilerMapsOnly) {
-            removeAllFromClassStorage(dirtyClasses.map { it.fqNameForClassNameWithoutDollars }, changesCollector)
-        }
+        removeAllFromClassStorage(dirtyClasses.map { it.fqNameForClassNameWithoutDollars }, changesCollector, icContext.useCompilerMapsOnly)
+
         dirtyOutputClassesMap.clean()
     }