[K2/N] KT-56030: Support Objective-C overloading by param names only
Merge-request: KT-MR-8901 Merged-by: Vladimir Sukharev <Vladimir.Sukharev@jetbrains.com>
This commit is contained in:
committed by
Space Team
parent
c957a0b43b
commit
b9633375b4
+11
-3
@@ -15,7 +15,15 @@ import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
|
||||
import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid
|
||||
import org.jetbrains.kotlin.name.SpecialNames
|
||||
|
||||
class ManglerChecker(vararg _manglers: KotlinMangler<IrDeclaration>) : IrElementVisitorVoid {
|
||||
class ManglerChecker(
|
||||
vararg _manglers: KotlinMangler<IrDeclaration>,
|
||||
private val needsChecking: (IrDeclarationBase) -> Boolean = hasDescriptor
|
||||
) : IrElementVisitorVoid {
|
||||
|
||||
companion object {
|
||||
val hasDescriptor: (IrDeclarationBase) -> Boolean = { it.symbol.hasDescriptor }
|
||||
val hasMetadata: (IrDeclarationBase) -> Boolean = { (it as? IrMetadataSourceOwner)?.metadata != null }
|
||||
}
|
||||
|
||||
private val manglers = _manglers.toList()
|
||||
|
||||
@@ -29,7 +37,7 @@ class ManglerChecker(vararg _manglers: KotlinMangler<IrDeclaration>) : IrElement
|
||||
}
|
||||
|
||||
override fun visitDeclaration(declaration: IrDeclarationBase, data: Nothing?): Boolean {
|
||||
if (!declaration.symbol.hasDescriptor) return true
|
||||
if (!needsChecking(declaration)) return true
|
||||
|
||||
if (declaration.parent is IrPackageFragment) {
|
||||
val vis = declaration as IrDeclarationWithVisibility
|
||||
@@ -87,7 +95,7 @@ class ManglerChecker(vararg _manglers: KotlinMangler<IrDeclaration>) : IrElement
|
||||
if (declaration is IrErrorDeclaration) return
|
||||
|
||||
val exported = manglers.checkAllEqual(false, { isExportCheck(declaration) }) { m1, r1, m2, r2 ->
|
||||
error("${declaration.render()}\n ${m1.manglerName}: $r1\n ${m2.manglerName}: $r2\n")
|
||||
error("isExportCheck: ${declaration.render()}\n ${m1.manglerName}: $r1\n ${m2.manglerName}: $r2\n")
|
||||
}
|
||||
|
||||
if (!exported) return
|
||||
|
||||
+1
-1
@@ -36,4 +36,4 @@ fun <T> Iterable<T>.collectForMangler(builder: StringBuilder, params: MangleCons
|
||||
builder.append(params.suffix)
|
||||
}
|
||||
|
||||
internal val publishedApiAnnotation = FqName("kotlin.PublishedApi")
|
||||
val publishedApiAnnotation = FqName("kotlin.PublishedApi")
|
||||
|
||||
Reference in New Issue
Block a user