JVM IR: use a simpler way to check if class is local
This commit is contained in:
+2
-1
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.backend.jvm.codegen
|
||||
import org.jetbrains.kotlin.builtins.jvm.JavaToKotlinClassMap
|
||||
import org.jetbrains.kotlin.codegen.signature.JvmSignatureWriter
|
||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||
import org.jetbrains.kotlin.descriptors.Visibilities
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
import org.jetbrains.kotlin.ir.types.IrSimpleType
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
@@ -62,7 +63,7 @@ private fun IrSimpleType.buildPossiblyInnerType(classifier: IrClass?, index: Int
|
||||
|
||||
val toIndex = classifier.typeParameters.size + index
|
||||
if (!classifier.isInner) {
|
||||
assert(toIndex == arguments.size || classifier.isLocalClass()) {
|
||||
assert(toIndex == arguments.size || classifier.visibility == Visibilities.LOCAL) {
|
||||
"${arguments.size - toIndex} trailing arguments were found in this type: ${render()}"
|
||||
}
|
||||
|
||||
|
||||
@@ -272,17 +272,6 @@ val IrDeclaration.parentAsClass: IrClass
|
||||
get() = parent as? IrClass
|
||||
?: error("Parent of this declaration is not a class: ${render()}")
|
||||
|
||||
fun IrClass.isLocalClass(): Boolean {
|
||||
var current: IrDeclarationParent? = this
|
||||
while (current != null && current !is IrPackageFragment) {
|
||||
if (current is IrDeclarationWithVisibility && current.visibility == Visibilities.LOCAL)
|
||||
return true
|
||||
current = (current as? IrDeclaration)?.parent
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
tailrec fun IrElement.getPackageFragment(): IrPackageFragment? {
|
||||
if (this is IrPackageFragment) return this
|
||||
return when (val parent = (this as? IrDeclaration)?.parent) {
|
||||
|
||||
Reference in New Issue
Block a user