[light classes] create enum references as PsiReferenceExpressions

Ensure that enum constants with special characters in their names are properly ignored
This commit is contained in:
Anna Kozlova
2023-06-13 14:37:43 +02:00
committed by Space Team
parent 2353424817
commit 95ec7ede66
4 changed files with 20 additions and 1 deletions
@@ -200,7 +200,7 @@ internal fun KtAnnotationValue.toAnnotationMemberValue(parent: PsiElement): PsiA
private fun KtEnumEntryAnnotationValue.asPsiReferenceExpression(parent: PsiElement): SymbolPsiReference? {
val fqName = this.callableId?.asSingleFqName()?.asString() ?: return null
val psiReference = parent.project.withElementFactorySafe {
createExpressionFromText(fqName, parent) as PsiReferenceExpression
createExpressionFromText(fqName, parent) as? PsiReferenceExpression
} ?: return null
return SymbolPsiReference(sourcePsi, parent, psiReference)
@@ -0,0 +1,4 @@
@p.Anno(value = ?)
public final class Foo /* p.Foo*/ {
public Foo();// .ctor()
}
@@ -0,0 +1,9 @@
// PSI: org.jetbrains.kotlin.light.classes.symbol.classes.SymbolLightClassForClassOrObject
// EXPECTED: p.Anno
package p
@Anno(E.`TA-DA`)
class Fo<caret>o {}
enum class E {`TA-DA`, `TA-TA` }
annotation class Anno(val value: E)
@@ -30,6 +30,12 @@ public class SymbolLightClassesAnnotationEqualityForSourceTestGenerated extends
runTest("analysis/symbol-light-classes/testData/annotationsEquality/Deprecated.kt");
}
@Test
@TestMetadata("EnumConstantNameInQuotes.kt")
public void testEnumConstantNameInQuotes() throws Exception {
runTest("analysis/symbol-light-classes/testData/annotationsEquality/EnumConstantNameInQuotes.kt");
}
@Test
@TestMetadata("ExplicitRetension.kt")
public void testExplicitRetension() throws Exception {