[SLC] enum entries should be psi reference instead of psi expression
^KT-56728 Fixed
This commit is contained in:
committed by
Space Team
parent
e65c863f8c
commit
0eb90cccd1
+21
@@ -5,6 +5,8 @@
|
||||
|
||||
package org.jetbrains.kotlin.light.classes.symbol.annotations
|
||||
|
||||
import com.intellij.openapi.util.Key
|
||||
import com.intellij.openapi.util.NlsSafe
|
||||
import com.intellij.psi.*
|
||||
import org.jetbrains.kotlin.asJava.elements.KtLightElementBase
|
||||
import org.jetbrains.kotlin.light.classes.symbol.toArrayIfNotEmptyOrDefault
|
||||
@@ -61,6 +63,25 @@ internal class SymbolPsiExpression(
|
||||
override fun getText(): String = psiExpression.text
|
||||
}
|
||||
|
||||
internal class SymbolPsiReference(
|
||||
override val kotlinOrigin: KtElement?,
|
||||
lightParent: PsiElement,
|
||||
private val psiReference: PsiJavaCodeReferenceElement,
|
||||
) : SymbolPsiAnnotationMemberValue(kotlinOrigin, lightParent),
|
||||
PsiJavaCodeReferenceElement, PsiJavaReference by psiReference {
|
||||
override fun getText(): String = psiReference.text
|
||||
|
||||
override fun getReferenceNameElement(): PsiElement? = psiReference.referenceNameElement
|
||||
override fun getParameterList(): PsiReferenceParameterList? = psiReference.parameterList
|
||||
override fun getTypeParameters(): Array<PsiType> = psiReference.typeParameters
|
||||
override fun isQualified(): Boolean = psiReference.isQualified
|
||||
override fun getQualifiedName(): String? = psiReference.qualifiedName
|
||||
override fun getQualifier(): PsiElement? = psiReference.qualifier
|
||||
override fun getReferenceName(): String? = psiReference.referenceName
|
||||
override fun <T> getCopyableUserData(key: Key<T>): T? = null
|
||||
override fun <T> putCopyableUserData(key: Key<T>, value: T?) {}
|
||||
}
|
||||
|
||||
internal class SymbolPsiLiteral(
|
||||
override val kotlinOrigin: KtElement?,
|
||||
lightParent: PsiElement,
|
||||
|
||||
+2
-2
@@ -196,8 +196,8 @@ internal fun KtAnnotationValue.toAnnotationMemberValue(parent: PsiElement): PsiA
|
||||
|
||||
is KtEnumEntryAnnotationValue -> {
|
||||
val fqName = this.callableId?.asSingleFqName()?.asString() ?: return null
|
||||
val psiExpression = PsiElementFactory.getInstance(parent.project).createExpressionFromText(fqName, parent)
|
||||
SymbolPsiExpression(sourcePsi, parent, psiExpression)
|
||||
val psiReference = PsiElementFactory.getInstance(parent.project).createReferenceFromText(fqName, parent)
|
||||
SymbolPsiReference(sourcePsi, parent, psiReference)
|
||||
}
|
||||
|
||||
KtUnsupportedAnnotationValue -> null
|
||||
|
||||
Reference in New Issue
Block a user