diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IrUtils.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IrUtils.kt index 6f570eb12a5..8204aa6f941 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IrUtils.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IrUtils.kt @@ -606,4 +606,10 @@ internal fun IrConst.shallowCopy() = IrConstImpl( type, kind, value -) \ No newline at end of file +) + +val IrDeclarationParent.isFacadeClass: Boolean + get() = this is IrClass && + (origin == IrDeclarationOrigin.JVM_MULTIFILE_CLASS || + origin == IrDeclarationOrigin.FILE_CLASS || + origin == IrDeclarationOrigin.SYNTHETIC_FILE_CLASS) \ No newline at end of file diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/mangle/ir/IrMangleComputer.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/mangle/ir/IrMangleComputer.kt index 1eb159b46d5..f0fe9925ba6 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/mangle/ir/IrMangleComputer.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/mangle/ir/IrMangleComputer.kt @@ -14,6 +14,7 @@ import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.symbols.IrClassSymbol import org.jetbrains.kotlin.ir.symbols.IrTypeParameterSymbol import org.jetbrains.kotlin.ir.types.* +import org.jetbrains.kotlin.ir.util.isFacadeClass import org.jetbrains.kotlin.ir.util.isVararg import org.jetbrains.kotlin.ir.util.parentAsClass import org.jetbrains.kotlin.ir.util.render @@ -293,7 +294,8 @@ abstract class IrMangleComputer(protected val builder: StringBuilder, private va isRealExpect = isRealExpect or declaration.isExpect val container = declaration.correspondingPropertySymbol?.owner ?: declaration - val isStatic = declaration.dispatchReceiverParameter == null && container.parent !is IrPackageFragment + val isStatic = declaration.dispatchReceiverParameter == null && + (container.parent !is IrPackageFragment && !container.parent.isFacadeClass) declaration.mangleFunction(false, isStatic, container) } diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/signature/IdSignatureSerializer.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/signature/IdSignatureSerializer.kt index 025fdb7ecac..ce156fe6890 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/signature/IdSignatureSerializer.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/signature/IdSignatureSerializer.kt @@ -16,6 +16,7 @@ import org.jetbrains.kotlin.ir.overrides.isOverridableProperty import org.jetbrains.kotlin.ir.symbols.IrFileSymbol import org.jetbrains.kotlin.ir.util.IdSignature import org.jetbrains.kotlin.ir.util.KotlinMangler +import org.jetbrains.kotlin.ir.util.isFacadeClass import org.jetbrains.kotlin.ir.util.render import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid import org.jetbrains.kotlin.ir.visitors.acceptVoid @@ -79,7 +80,9 @@ class PublicIdSignatureComputer(val mangler: KotlinMangler.IrMangler) : IdSignat private fun collectParents(declaration: IrDeclarationWithName) { declaration.parent.acceptVoid(this) - classFqnSegments.add(declaration.name.asString()) + if (declaration !is IrClass || !declaration.isFacadeClass) { + classFqnSegments.add(declaration.name.asString()) + } } private fun setDescription(declaration: IrDeclaration) { @@ -190,10 +193,6 @@ class PublicIdSignatureComputer(val mangler: KotlinMangler.IrMangler) : IdSignat hashId = declaration.hashId() } } - - override fun visitField(declaration: IrField) { - collectFqNames(declaration) - } } }