[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
|
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 com.intellij.psi.*
|
||||||
import org.jetbrains.kotlin.asJava.elements.KtLightElementBase
|
import org.jetbrains.kotlin.asJava.elements.KtLightElementBase
|
||||||
import org.jetbrains.kotlin.light.classes.symbol.toArrayIfNotEmptyOrDefault
|
import org.jetbrains.kotlin.light.classes.symbol.toArrayIfNotEmptyOrDefault
|
||||||
@@ -61,6 +63,25 @@ internal class SymbolPsiExpression(
|
|||||||
override fun getText(): String = psiExpression.text
|
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(
|
internal class SymbolPsiLiteral(
|
||||||
override val kotlinOrigin: KtElement?,
|
override val kotlinOrigin: KtElement?,
|
||||||
lightParent: PsiElement,
|
lightParent: PsiElement,
|
||||||
|
|||||||
+2
-2
@@ -196,8 +196,8 @@ internal fun KtAnnotationValue.toAnnotationMemberValue(parent: PsiElement): PsiA
|
|||||||
|
|
||||||
is KtEnumEntryAnnotationValue -> {
|
is KtEnumEntryAnnotationValue -> {
|
||||||
val fqName = this.callableId?.asSingleFqName()?.asString() ?: return null
|
val fqName = this.callableId?.asSingleFqName()?.asString() ?: return null
|
||||||
val psiExpression = PsiElementFactory.getInstance(parent.project).createExpressionFromText(fqName, parent)
|
val psiReference = PsiElementFactory.getInstance(parent.project).createReferenceFromText(fqName, parent)
|
||||||
SymbolPsiExpression(sourcePsi, parent, psiExpression)
|
SymbolPsiReference(sourcePsi, parent, psiReference)
|
||||||
}
|
}
|
||||||
|
|
||||||
KtUnsupportedAnnotationValue -> null
|
KtUnsupportedAnnotationValue -> null
|
||||||
|
|||||||
Reference in New Issue
Block a user