diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/overrides/IrOverridingUtil.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/overrides/IrOverridingUtil.kt index 6338bde5c9f..dbb9a4c4ece 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/overrides/IrOverridingUtil.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/overrides/IrOverridingUtil.kt @@ -5,17 +5,12 @@ package org.jetbrains.kotlin.ir.overrides -import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor -import org.jetbrains.kotlin.descriptors.DescriptorVisibilities -import org.jetbrains.kotlin.descriptors.DescriptorVisibility -import org.jetbrains.kotlin.descriptors.Modality +import org.jetbrains.kotlin.descriptors.* +import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.symbols.* import org.jetbrains.kotlin.ir.types.* -import org.jetbrains.kotlin.ir.util.collectAndFilterRealOverrides -import org.jetbrains.kotlin.ir.util.fileOrNull -import org.jetbrains.kotlin.ir.util.isReal -import org.jetbrains.kotlin.ir.util.render +import org.jetbrains.kotlin.ir.util.* import org.jetbrains.kotlin.resolve.OverridingUtil.OverrideCompatibilityInfo import org.jetbrains.kotlin.resolve.OverridingUtil.OverrideCompatibilityInfo.incompatible import org.jetbrains.kotlin.types.AbstractTypeChecker @@ -39,22 +34,19 @@ abstract class FakeOverrideBuilderStrategy(private val friendModules: Map>): Boolean { if (visibility != DescriptorVisibilities.INTERNAL) return false - val thisModule = thisClass.fileOrNull?.module - val memberModule = memberClass.fileOrNull?.module - if (thisModule == memberModule) return false - // Note: On WASM backend there is possible if `thisClass` is from `IrExternalPackageFragment` which module is null + val thisModule = thisClass.getPackageFragment().packageFragmentDescriptor.containingDeclaration + val memberModule = memberClass.getPackageFragment().packageFragmentDescriptor.containingDeclaration - if (thisModule == null || memberModule == null) return false - - return !isInFriendModules(thisModule, memberModule, friendModules) + return thisModule != memberModule && !isInFriendModules(thisModule, memberModule, friendModules) } private fun isInFriendModules( - fromModule: IrModuleFragment, - toModule: IrModuleFragment, + fromModule: ModuleDescriptor, + toModule: ModuleDescriptor, friendModules: Map> ): Boolean {