@@ -128,7 +128,7 @@ abstract class AbstractIncrementalCache<ClassName>(
128128 *
129129 * The `srcFile` argument may be `null` (e.g., if we are processing .class files in jars where source files are not available).
130130 */
131- protected fun addToClassStorage (classProtoData : ClassProtoData , srcFile : File ? ) {
131+ protected fun addToClassStorage (classProtoData : ClassProtoData , srcFile : File ? , useCompilerMapsOnly : Boolean = false ) {
132132 val (proto, nameResolver) = classProtoData
133133
134134 val supertypes = proto.supertypes(TypeTable (proto.typeTable))
@@ -143,11 +143,17 @@ abstract class AbstractIncrementalCache<ClassName>(
143143 removedSupertypes.forEach { subtypesMap.removeValues(it, setOf (child)) }
144144
145145 supertypesMap[child] = parents
146- srcFile?.let { classFqNameToSourceMap[child] = it }
147- classAttributesMap[child] = ICClassesAttributes (ProtoBuf .Modality .SEALED == Flags .MODALITY .get(proto.flags))
146+ if (! useCompilerMapsOnly) {
147+ srcFile?.let { classFqNameToSourceMap[child] = it }
148+ classAttributesMap[child] = ICClassesAttributes (ProtoBuf .Modality .SEALED == Flags .MODALITY .get(proto.flags))
149+ }
148150 }
149151
150- protected fun removeAllFromClassStorage (removedClasses : Collection <FqName >, changesCollector : ChangesCollector ) {
152+ protected fun removeAllFromClassStorage (
153+ removedClasses : Collection <FqName >,
154+ changesCollector : ChangesCollector ,
155+ useCompilerMapsOnly : Boolean = false,
156+ ) {
151157 if (removedClasses.isEmpty()) return
152158
153159 val removedFqNames = removedClasses.toSet()
@@ -179,9 +185,11 @@ abstract class AbstractIncrementalCache<ClassName>(
179185 }
180186 }
181187
182- removedFqNames.forEach {
183- classFqNameToSourceMap.remove(it)
184- classAttributesMap.remove(it)
188+ if (! useCompilerMapsOnly) {
189+ removedFqNames.forEach {
190+ classFqNameToSourceMap.remove(it)
191+ classAttributesMap.remove(it)
192+ }
185193 }
186194 }
187195
0 commit comments