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