Commit 5967d99f authored by Jinseong Jeon's avatar Jinseong Jeon
Browse files

LC: regression test for findAttributeValue for attribute w/ default value

^KT-58448
parent ebe600c7
Showing with 44 additions and 0 deletions
+44 -0
......@@ -10,6 +10,8 @@ import org.jetbrains.kotlin.psi.KtModifierListOwner
import org.jetbrains.kotlin.psi.KtProperty
import org.jetbrains.uast.*
import com.intellij.platform.uast.testFramework.env.findElementByTextFromPsi
import org.jetbrains.kotlin.asJava.elements.KtLightElement
import org.jetbrains.kotlin.test.util.joinToArrayString
import org.jetbrains.uast.visitor.AbstractUastVisitor
// NB: Similar to [UastResolveApiFixtureTestBase], but focusing on light classes, not `resolve`
......@@ -473,4 +475,38 @@ interface LightClassBehaviorTestBase : UastPluginSelection {
TestCase.assertEquals("kotlin.jvm.functions.Function1<java.lang.Integer,java.lang.Integer>", sum?.type?.canonicalText)
}
fun checkDefaultValueOfAnnotation(myFixture: JavaCodeInsightTestFixture) {
myFixture.configureByText(
"main.kt", """
annotation class IntDef(
vararg val value: Int = [],
val flag: Boolean = false,
val open: Boolean = false
)
@IntDef(value = [DisconnectReasons.ENGINE_DIED, DisconnectReasons.ENGINE_DETACHED])
annotation class DisconnectReason
object DisconnectReasons {
const val ENGINE_DIED: Int = 1
const val ENGINE_DETACHED: Int = 2
}
""".trimIndent()
)
val uFile = myFixture.file.toUElement()!!
val klass = uFile.findElementByTextFromPsi<UClass>("class DisconnectReason", strict = false)
.orFail("cant convert to UClass")
val lc = klass.uAnnotations.single().javaPsi!!
val intValues = (lc.findAttributeValue("value") as? PsiArrayInitializerMemberValue)?.initializers
TestCase.assertEquals(
"[1, 2]",
intValues?.joinToString(separator = ", ", prefix = "[", postfix = "]") { annoValue ->
(annoValue as? PsiLiteral)?.value?.toString() ?: annoValue.text
}
)
val flagValue = (lc.findAttributeValue("flag") as? PsiLiteral)?.value
TestCase.assertEquals("false", flagValue?.toString())
}
}
\ No newline at end of file
......@@ -68,4 +68,8 @@ class FirLightClassBehaviorTest : KotlinLightCodeInsightFixtureTestCase(), Light
fun testUpperBoundWildcardForVar() {
checkUpperBoundWildcardForVar(myFixture)
}
fun testDefaultValueOfAnnotation() {
checkDefaultValueOfAnnotation(myFixture)
}
}
\ No newline at end of file
......@@ -66,4 +66,8 @@ class FE1LightClassBehaviorTest : KotlinLightCodeInsightFixtureTestCase(), Light
fun testUpperBoundWildcardForVar() {
checkUpperBoundWildcardForVar(myFixture)
}
fun testDefaultValueOfAnnotation() {
checkDefaultValueOfAnnotation(myFixture)
}
}
\ No newline at end of file
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment