[light classes] move KtLightMethodImpl to light-classes-base module

^KT-53097
This commit is contained in:
Dmitry Gridin
2022-07-12 10:46:25 +02:00
committed by Space
parent 024c40a3fa
commit 81a5b4070d
2 changed files with 12 additions and 6 deletions
@@ -81,7 +81,12 @@ object JvmFileClassUtil {
it.calleeExpression?.constructorReferenceExpression?.getReferencedName() == shortName
}
@Suppress("MemberVisibilityCanBePrivate")
fun getLiteralStringFromAnnotation(annotation: KtAnnotationEntry): String? {
return getLiteralStringEntryFromAnnotation(annotation)?.text
}
fun getLiteralStringEntryFromAnnotation(annotation: KtAnnotationEntry): KtLiteralStringTemplateEntry? {
val stringTemplateExpression = annotation.valueArguments.firstOrNull()?.run {
when (this) {
is KtValueArgument -> stringTemplateExpression
@@ -89,8 +94,7 @@ object JvmFileClassUtil {
}
} ?: return null
val singleEntry = stringTemplateExpression.entries.singleOrNull() as? KtLiteralStringTemplateEntry ?: return null
return singleEntry.text
return stringTemplateExpression.entries.singleOrNull() as? KtLiteralStringTemplateEntry
}
}
@@ -15,8 +15,8 @@ import org.jetbrains.kotlin.asJava.builder.LightMemberOriginForDeclaration
import org.jetbrains.kotlin.asJava.classes.KtLightClass
import org.jetbrains.kotlin.asJava.classes.cannotModify
import org.jetbrains.kotlin.asJava.classes.lazyPub
import org.jetbrains.kotlin.fileClasses.JvmFileClassUtil
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.resolve.DescriptorUtils
abstract class KtLightMethodImpl protected constructor(
lightMemberOrigin: LightMemberOriginForDeclaration?,
@@ -48,20 +48,22 @@ abstract class KtLightMethodImpl protected constructor(
override val isMangled: Boolean get() = checkIsMangled()
override fun setName(name: String): PsiElement? {
val jvmNameAnnotation = modifierList.findAnnotation(DescriptorUtils.JVM_NAME.asString())
val jvmNameAnnotation = modifierList.findAnnotation(JvmFileClassUtil.JVM_NAME.asString())?.unwrapped as? KtAnnotationEntry
val demangledName = (if (isMangled) demangleInternalName(name) else null) ?: name
val newNameForOrigin = propertyNameByAccessor(demangledName, this) ?: demangledName
if (newNameForOrigin == kotlinOrigin?.name) {
jvmNameAnnotation?.delete()
return this
}
val nameExpression = jvmNameAnnotation?.findAttributeValue("name")?.unwrapped as? KtStringTemplateExpression
val nameExpression = jvmNameAnnotation?.let { JvmFileClassUtil.getLiteralStringEntryFromAnnotation(it) }
if (nameExpression != null) {
nameExpression.replace(KtPsiFactory(this).createStringTemplate(name))
nameExpression.replace(KtPsiFactory(this).createLiteralStringTemplateEntry(name))
} else {
val toRename = kotlinOrigin as? PsiNamedElement ?: cannotModify()
toRename.setName(newNameForOrigin)
}
return this
}