From 4b47eb359a0f704080543a6037955b498b9d3d76 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Tue, 26 May 2020 12:26:40 +0300 Subject: [PATCH] IR linked: introduce IrElement.isExpectMember instead of descriptor use --- .../backend/common/serialization/KotlinIrLinker.kt | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/KotlinIrLinker.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/KotlinIrLinker.kt index 709f02d8d7c..e9fa0d28843 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/KotlinIrLinker.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/KotlinIrLinker.kt @@ -6,13 +6,12 @@ package org.jetbrains.kotlin.backend.common.serialization import org.jetbrains.kotlin.backend.common.LoggingContext +import org.jetbrains.kotlin.backend.common.ir.isExpect import org.jetbrains.kotlin.backend.common.serialization.encodings.BinarySymbolData import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.descriptors.impl.EmptyPackageFragmentDescriptor import org.jetbrains.kotlin.ir.IrElement -import org.jetbrains.kotlin.ir.declarations.IrDeclaration -import org.jetbrains.kotlin.ir.declarations.IrFile -import org.jetbrains.kotlin.ir.declarations.IrModuleFragment +import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.declarations.impl.IrFileImpl import org.jetbrains.kotlin.ir.declarations.impl.IrModuleFragmentImpl import org.jetbrains.kotlin.ir.descriptors.* @@ -497,6 +496,10 @@ abstract class KotlinIrLinker( protected open fun platformSpecificSymbol(symbol: IrSymbol): Boolean = false + private fun IrElement.isExpectMember(): Boolean = + this is IrSymbolDeclaration<*> && + (this.isExpect || (this.parent as? IrDeclaration)?.isExpect == true) + override fun getDeclaration(symbol: IrSymbol): IrDeclaration? { if (!symbol.isPublicApi) { @@ -512,7 +515,7 @@ abstract class KotlinIrLinker( } // TODO: we do have serializations for those, but let's just create a stub for now. - if (!symbol.isBound && (symbol.descriptor.isExpectMember || symbol.descriptor.containingDeclaration?.isExpectMember == true)) + if (!symbol.isBound && symbol.owner.isExpectMember()) return null assert(symbol.isBound) {