diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IncrementalCompilationSupport.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IncrementalCompilationSupport.kt index d3789a41117..06c4d8749c6 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IncrementalCompilationSupport.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IncrementalCompilationSupport.kt @@ -6,9 +6,7 @@ package org.jetbrains.kotlin.backend.common.serialization import org.jetbrains.kotlin.backend.common.serialization.encodings.BinarySymbolData -import org.jetbrains.kotlin.descriptors.DeclarationDescriptor -import org.jetbrains.kotlin.descriptors.DeserializedDescriptor -import org.jetbrains.kotlin.descriptors.PropertyAccessorDescriptor +import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.ir.declarations.IrModuleFragment import org.jetbrains.kotlin.ir.declarations.IrSymbolOwner import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns @@ -111,6 +109,11 @@ class CurrentModuleWithICDeserializer( private fun DeclarationDescriptor.isDirtyDescriptor(): Boolean { if (this is PropertyAccessorDescriptor) return correspondingProperty.isDirtyDescriptor() + // Since descriptors for FO methods of `kotlin.Any` (toString, equals, hashCode) are Deserialized even in + // dirty files make test more precise checking containing declaration for non-static members + if (this is CallableMemberDescriptor && dispatchReceiverParameter != null) { + return containingDeclaration.isDirtyDescriptor() + } return this !is DeserializedDescriptor }