[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()
}