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
|
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)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user