From 2c3d8feb26f3c6fb36b186f9fd179e8d53a3a6bc Mon Sep 17 00:00:00 2001 From: Roman Artemev Date: Fri, 19 Jun 2020 16:08:28 +0300 Subject: [PATCH] [KLIB IC] Fix dirty declaration detector - make kjs-stdlib be compiled correctly in IC mode --- .../serialization/IncrementalCompilationSupport.kt | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) 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 }