fix(KT-40236): compute JsName from overridden symbols.

This commit is contained in:
Artem Kobzar
2021-10-29 14:09:31 +00:00
committed by Space
parent 29bb8cea8f
commit 102072a229
5 changed files with 62 additions and 1 deletions
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.ir.backend.js.utils
import org.jetbrains.kotlin.ir.declarations.IrAnnotationContainer
import org.jetbrains.kotlin.ir.declarations.IrClass
import org.jetbrains.kotlin.ir.declarations.IrDeclarationWithName
import org.jetbrains.kotlin.ir.declarations.IrOverridableDeclaration
import org.jetbrains.kotlin.ir.expressions.IrClassReference
import org.jetbrains.kotlin.ir.expressions.IrConst
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
@@ -56,8 +57,19 @@ fun IrAnnotationContainer.isJsNativeSetter(): Boolean = hasAnnotation(JsAnnotati
fun IrAnnotationContainer.isJsNativeInvoke(): Boolean = hasAnnotation(JsAnnotations.jsNativeInvoke)
fun IrDeclarationWithName.getJsNameForOverriddenDeclaration(): String? {
val jsName = getJsName()
return when {
jsName != null -> jsName
this is IrOverridableDeclaration<*> ->
overriddenSymbols.firstNotNullOfOrNull { (it.owner as? IrAnnotationContainer)?.getJsName() }
else -> null
}
}
fun IrDeclarationWithName.getJsNameOrKotlinName(): Name =
when (val jsName = getJsName()) {
when (val jsName = getJsNameForOverriddenDeclaration()) {
null -> name
else -> Name.identifier(jsName)
}