JVM_IR: deal with facade classes when computing signature
This commit is contained in:
committed by
TeamCityServer
parent
97d3eda23c
commit
7b52a8c07d
@@ -607,3 +607,9 @@ internal fun <T> IrConst<T>.shallowCopy() = IrConstImpl(
|
|||||||
kind,
|
kind,
|
||||||
value
|
value
|
||||||
)
|
)
|
||||||
|
|
||||||
|
val IrDeclarationParent.isFacadeClass: Boolean
|
||||||
|
get() = this is IrClass &&
|
||||||
|
(origin == IrDeclarationOrigin.JVM_MULTIFILE_CLASS ||
|
||||||
|
origin == IrDeclarationOrigin.FILE_CLASS ||
|
||||||
|
origin == IrDeclarationOrigin.SYNTHETIC_FILE_CLASS)
|
||||||
+3
-1
@@ -14,6 +14,7 @@ import org.jetbrains.kotlin.ir.declarations.*
|
|||||||
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrTypeParameterSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrTypeParameterSymbol
|
||||||
import org.jetbrains.kotlin.ir.types.*
|
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.isVararg
|
||||||
import org.jetbrains.kotlin.ir.util.parentAsClass
|
import org.jetbrains.kotlin.ir.util.parentAsClass
|
||||||
import org.jetbrains.kotlin.ir.util.render
|
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
|
isRealExpect = isRealExpect or declaration.isExpect
|
||||||
|
|
||||||
val container = declaration.correspondingPropertySymbol?.owner ?: declaration
|
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)
|
declaration.mangleFunction(false, isStatic, container)
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-5
@@ -16,6 +16,7 @@ import org.jetbrains.kotlin.ir.overrides.isOverridableProperty
|
|||||||
import org.jetbrains.kotlin.ir.symbols.IrFileSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrFileSymbol
|
||||||
import org.jetbrains.kotlin.ir.util.IdSignature
|
import org.jetbrains.kotlin.ir.util.IdSignature
|
||||||
import org.jetbrains.kotlin.ir.util.KotlinMangler
|
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.util.render
|
||||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
|
import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
|
||||||
import org.jetbrains.kotlin.ir.visitors.acceptVoid
|
import org.jetbrains.kotlin.ir.visitors.acceptVoid
|
||||||
@@ -79,7 +80,9 @@ class PublicIdSignatureComputer(val mangler: KotlinMangler.IrMangler) : IdSignat
|
|||||||
|
|
||||||
private fun collectParents(declaration: IrDeclarationWithName) {
|
private fun collectParents(declaration: IrDeclarationWithName) {
|
||||||
declaration.parent.acceptVoid(this)
|
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) {
|
private fun setDescription(declaration: IrDeclaration) {
|
||||||
@@ -190,10 +193,6 @@ class PublicIdSignatureComputer(val mangler: KotlinMangler.IrMangler) : IdSignat
|
|||||||
hashId = declaration.hashId()
|
hashId = declaration.hashId()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun visitField(declaration: IrField) {
|
|
||||||
collectFqNames(declaration)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user