LightAnnotations: wrapping all PsiLiterals (not only Strings)
This commit is contained in:
committed by
Nicolay Mitropolsky
parent
99fca79bdc
commit
bc543b4cdf
@@ -176,7 +176,7 @@ class KtLightAnnotationForSourceEntry(
|
||||
override fun getType(): PsiType? = delegate.type
|
||||
}
|
||||
|
||||
inner class LightStringLiteral(
|
||||
inner class LightPsiLiteral(
|
||||
delegate: PsiLiteralExpression,
|
||||
parent: PsiElement,
|
||||
valueOrigin: AnnotationValueOrigin
|
||||
@@ -230,7 +230,7 @@ class KtLightAnnotationForSourceEntry(
|
||||
|
||||
private fun wrapAnnotationValue(value: PsiAnnotationMemberValue, parent: PsiElement, ktOrigin: AnnotationValueOrigin): PsiAnnotationMemberValue =
|
||||
when {
|
||||
value is PsiLiteralExpression && value.value is String -> LightStringLiteral(value, parent, ktOrigin)
|
||||
value is PsiLiteralExpression -> LightPsiLiteral(value, parent, ktOrigin)
|
||||
value is PsiClassObjectAccessExpression -> LightClassLiteral(value, parent, ktOrigin)
|
||||
value is PsiExpression -> LightExpressionValue(value, parent, ktOrigin)
|
||||
value is PsiArrayInitializerMemberValue -> LightArrayInitializerValue(value, parent, ktOrigin)
|
||||
|
||||
@@ -23,6 +23,7 @@ import com.intellij.testFramework.LightProjectDescriptor
|
||||
import junit.framework.TestCase
|
||||
import org.jetbrains.kotlin.asJava.elements.KtLightAnnotationForSourceEntry
|
||||
import org.jetbrains.kotlin.config.LanguageFeature
|
||||
import org.jetbrains.kotlin.idea.completion.test.assertInstanceOf
|
||||
import org.jetbrains.kotlin.idea.facet.configureFacet
|
||||
import org.jetbrains.kotlin.idea.facet.getOrCreateFacet
|
||||
import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase
|
||||
@@ -223,7 +224,7 @@ class KtLightAnnotationTest : KotlinLightCodeInsightFixtureTestCase() {
|
||||
assertTextAndRange("[\"abc\", \"def\"]", annotationAttributeVal)
|
||||
|
||||
annotationAttributeVal as PsiArrayInitializerMemberValue
|
||||
assertTextAndRange("\"abc\"", annotationAttributeVal.initializers[0])
|
||||
assertTextAndRange("\"abc\"", annotationAttributeVal.initializers[0].assertInstanceOf<PsiLiteral>())
|
||||
assertTextAndRange("\"def\"", annotationAttributeVal.initializers[1])
|
||||
}
|
||||
|
||||
@@ -246,7 +247,7 @@ class KtLightAnnotationTest : KotlinLightCodeInsightFixtureTestCase() {
|
||||
assertTextAndRange("Anno2(1)", innerAnnotationAttributeVal)
|
||||
assertIsKtLightAnnotation("Anno2(1)", innerAnnotationAttributeVal)
|
||||
innerAnnotationAttributeVal as PsiAnnotation
|
||||
val value = innerAnnotationAttributeVal.findAttributeValue("v")!!
|
||||
val value = innerAnnotationAttributeVal.findAttributeValue("v").assertInstanceOf<PsiLiteral>()
|
||||
assertTextAndRange("1", value)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user