diff --git a/compiler/frontend.common.jvm/src/org/jetbrains/kotlin/fileClasses/JvmFileClassUtil.kt b/compiler/frontend.common.jvm/src/org/jetbrains/kotlin/fileClasses/JvmFileClassUtil.kt index b558bc5d46a..94a620d2a61 100644 --- a/compiler/frontend.common.jvm/src/org/jetbrains/kotlin/fileClasses/JvmFileClassUtil.kt +++ b/compiler/frontend.common.jvm/src/org/jetbrains/kotlin/fileClasses/JvmFileClassUtil.kt @@ -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 } } diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/elements/KtLightMethodImpl.kt b/compiler/light-classes-base/src/org/jetbrains/kotlin/asJava/elements/KtLightMethodImpl.kt similarity index 93% rename from compiler/light-classes/src/org/jetbrains/kotlin/asJava/elements/KtLightMethodImpl.kt rename to compiler/light-classes-base/src/org/jetbrains/kotlin/asJava/elements/KtLightMethodImpl.kt index e74b61fc287..25928c2bcc1 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/elements/KtLightMethodImpl.kt +++ b/compiler/light-classes-base/src/org/jetbrains/kotlin/asJava/elements/KtLightMethodImpl.kt @@ -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 }