[light classes] move KtLightMethodImpl to light-classes-base module
^KT-53097
This commit is contained in:
+6
-2
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+6
-4
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user