[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
|
it.calleeExpression?.constructorReferenceExpression?.getReferencedName() == shortName
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Suppress("MemberVisibilityCanBePrivate")
|
||||||
fun getLiteralStringFromAnnotation(annotation: KtAnnotationEntry): String? {
|
fun getLiteralStringFromAnnotation(annotation: KtAnnotationEntry): String? {
|
||||||
|
return getLiteralStringEntryFromAnnotation(annotation)?.text
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getLiteralStringEntryFromAnnotation(annotation: KtAnnotationEntry): KtLiteralStringTemplateEntry? {
|
||||||
val stringTemplateExpression = annotation.valueArguments.firstOrNull()?.run {
|
val stringTemplateExpression = annotation.valueArguments.firstOrNull()?.run {
|
||||||
when (this) {
|
when (this) {
|
||||||
is KtValueArgument -> stringTemplateExpression
|
is KtValueArgument -> stringTemplateExpression
|
||||||
@@ -89,8 +94,7 @@ object JvmFileClassUtil {
|
|||||||
}
|
}
|
||||||
} ?: return null
|
} ?: return null
|
||||||
|
|
||||||
val singleEntry = stringTemplateExpression.entries.singleOrNull() as? KtLiteralStringTemplateEntry ?: return null
|
return stringTemplateExpression.entries.singleOrNull() as? KtLiteralStringTemplateEntry
|
||||||
return singleEntry.text
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+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.KtLightClass
|
||||||
import org.jetbrains.kotlin.asJava.classes.cannotModify
|
import org.jetbrains.kotlin.asJava.classes.cannotModify
|
||||||
import org.jetbrains.kotlin.asJava.classes.lazyPub
|
import org.jetbrains.kotlin.asJava.classes.lazyPub
|
||||||
|
import org.jetbrains.kotlin.fileClasses.JvmFileClassUtil
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
|
||||||
|
|
||||||
abstract class KtLightMethodImpl protected constructor(
|
abstract class KtLightMethodImpl protected constructor(
|
||||||
lightMemberOrigin: LightMemberOriginForDeclaration?,
|
lightMemberOrigin: LightMemberOriginForDeclaration?,
|
||||||
@@ -48,20 +48,22 @@ abstract class KtLightMethodImpl protected constructor(
|
|||||||
override val isMangled: Boolean get() = checkIsMangled()
|
override val isMangled: Boolean get() = checkIsMangled()
|
||||||
|
|
||||||
override fun setName(name: String): PsiElement? {
|
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 demangledName = (if (isMangled) demangleInternalName(name) else null) ?: name
|
||||||
val newNameForOrigin = propertyNameByAccessor(demangledName, this) ?: demangledName
|
val newNameForOrigin = propertyNameByAccessor(demangledName, this) ?: demangledName
|
||||||
if (newNameForOrigin == kotlinOrigin?.name) {
|
if (newNameForOrigin == kotlinOrigin?.name) {
|
||||||
jvmNameAnnotation?.delete()
|
jvmNameAnnotation?.delete()
|
||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
val nameExpression = jvmNameAnnotation?.findAttributeValue("name")?.unwrapped as? KtStringTemplateExpression
|
|
||||||
|
val nameExpression = jvmNameAnnotation?.let { JvmFileClassUtil.getLiteralStringEntryFromAnnotation(it) }
|
||||||
if (nameExpression != null) {
|
if (nameExpression != null) {
|
||||||
nameExpression.replace(KtPsiFactory(this).createStringTemplate(name))
|
nameExpression.replace(KtPsiFactory(this).createLiteralStringTemplateEntry(name))
|
||||||
} else {
|
} else {
|
||||||
val toRename = kotlinOrigin as? PsiNamedElement ?: cannotModify()
|
val toRename = kotlinOrigin as? PsiNamedElement ?: cannotModify()
|
||||||
toRename.setName(newNameForOrigin)
|
toRename.setName(newNameForOrigin)
|
||||||
}
|
}
|
||||||
|
|
||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
Reference in New Issue
Block a user