LightAnnotations: wrapping all PsiLiterals (not only Strings)

This commit is contained in:
Nicolay Mitropolsky
2018-02-16 21:41:34 +03:00
committed by Nicolay Mitropolsky
parent 99fca79bdc
commit bc543b4cdf
2 changed files with 5 additions and 4 deletions
@@ -176,7 +176,7 @@ class KtLightAnnotationForSourceEntry(
override fun getType(): PsiType? = delegate.type override fun getType(): PsiType? = delegate.type
} }
inner class LightStringLiteral( inner class LightPsiLiteral(
delegate: PsiLiteralExpression, delegate: PsiLiteralExpression,
parent: PsiElement, parent: PsiElement,
valueOrigin: AnnotationValueOrigin valueOrigin: AnnotationValueOrigin
@@ -230,7 +230,7 @@ class KtLightAnnotationForSourceEntry(
private fun wrapAnnotationValue(value: PsiAnnotationMemberValue, parent: PsiElement, ktOrigin: AnnotationValueOrigin): PsiAnnotationMemberValue = private fun wrapAnnotationValue(value: PsiAnnotationMemberValue, parent: PsiElement, ktOrigin: AnnotationValueOrigin): PsiAnnotationMemberValue =
when { 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 PsiClassObjectAccessExpression -> LightClassLiteral(value, parent, ktOrigin)
value is PsiExpression -> LightExpressionValue(value, parent, ktOrigin) value is PsiExpression -> LightExpressionValue(value, parent, ktOrigin)
value is PsiArrayInitializerMemberValue -> LightArrayInitializerValue(value, parent, ktOrigin) value is PsiArrayInitializerMemberValue -> LightArrayInitializerValue(value, parent, ktOrigin)
@@ -23,6 +23,7 @@ import com.intellij.testFramework.LightProjectDescriptor
import junit.framework.TestCase import junit.framework.TestCase
import org.jetbrains.kotlin.asJava.elements.KtLightAnnotationForSourceEntry import org.jetbrains.kotlin.asJava.elements.KtLightAnnotationForSourceEntry
import org.jetbrains.kotlin.config.LanguageFeature 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.configureFacet
import org.jetbrains.kotlin.idea.facet.getOrCreateFacet import org.jetbrains.kotlin.idea.facet.getOrCreateFacet
import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase
@@ -223,7 +224,7 @@ class KtLightAnnotationTest : KotlinLightCodeInsightFixtureTestCase() {
assertTextAndRange("[\"abc\", \"def\"]", annotationAttributeVal) assertTextAndRange("[\"abc\", \"def\"]", annotationAttributeVal)
annotationAttributeVal as PsiArrayInitializerMemberValue annotationAttributeVal as PsiArrayInitializerMemberValue
assertTextAndRange("\"abc\"", annotationAttributeVal.initializers[0]) assertTextAndRange("\"abc\"", annotationAttributeVal.initializers[0].assertInstanceOf<PsiLiteral>())
assertTextAndRange("\"def\"", annotationAttributeVal.initializers[1]) assertTextAndRange("\"def\"", annotationAttributeVal.initializers[1])
} }
@@ -246,7 +247,7 @@ class KtLightAnnotationTest : KotlinLightCodeInsightFixtureTestCase() {
assertTextAndRange("Anno2(1)", innerAnnotationAttributeVal) assertTextAndRange("Anno2(1)", innerAnnotationAttributeVal)
assertIsKtLightAnnotation("Anno2(1)", innerAnnotationAttributeVal) assertIsKtLightAnnotation("Anno2(1)", innerAnnotationAttributeVal)
innerAnnotationAttributeVal as PsiAnnotation innerAnnotationAttributeVal as PsiAnnotation
val value = innerAnnotationAttributeVal.findAttributeValue("v")!! val value = innerAnnotationAttributeVal.findAttributeValue("v").assertInstanceOf<PsiLiteral>()
assertTextAndRange("1", value) assertTextAndRange("1", value)
} }