Commit 34ba2ba0 authored by Jinseong Jeon's avatar Jinseong Jeon Committed by intellij-monorepo-bot
Browse files

FIR/UAST: regression test for final modifier on enum members

^KT-57567

GitOrigin-RevId: 5ba6a8ea5b91482c7320a10a3cc5bbb27523bfd4
parent eedc5fea
Branches unavailable Tags unavailable
No related merge requests found
Showing with 60 additions and 0 deletions
+60 -0
// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package org.jetbrains.uast.test.common.kotlin
import com.intellij.lang.jvm.JvmModifier
import com.intellij.psi.*
import com.intellij.testFramework.fixtures.JavaCodeInsightTestFixture
import junit.framework.TestCase
......@@ -130,6 +131,57 @@ interface LightClassBehaviorTestBase : UastPluginSelection {
TestCase.assertEquals(getAMethodModifierList.textRange, ktPropertyAccessorModifierList.textRange)
}
fun checkFinalModifierOnEnumMembers(myFixture: JavaCodeInsightTestFixture) {
myFixture.configureByText(
"main.kt", """
enum class Event {
ON_CREATE, ON_START, ON_STOP, ON_DESTROY;
companion object {
@JvmStatic
fun upTo(state: State): Event? {
return when(state) {
State.ENQUEUED -> ON_CREATE
State.RUNNING -> ON_START
State.BLOCKED -> ON_STOP
else -> null
}
}
}
}
enum class State {
ENQUEUED, RUNNING, SUCCEEDED, FAILED, BLOCKED, CANCELLED;
val isFinished: Boolean
get() = this == SUCCEEDED || this == FAILED || this == CANCELLED
fun isAtLeast(state: State): Boolean {
return compareTo(state) >= 0
}
companion object {
fun done(state: State) = state.isFinished
}
}
""".trimIndent()
)
val uFile = myFixture.file.toUElement()!!
val upTo = uFile.findElementByTextFromPsi<UMethod>("upTo", strict = false)
.orFail("can't find fun upTo")
TestCase.assertTrue(upTo.javaPsi.hasModifier(JvmModifier.FINAL))
val isFinished = uFile.findElementByTextFromPsi<UMethod>("isFinished", strict = false)
.orFail("can't find accessor isFinished")
TestCase.assertTrue(isFinished.javaPsi.hasModifier(JvmModifier.FINAL))
val isAtLeast = uFile.findElementByTextFromPsi<UMethod>("isAtLeast", strict = false)
.orFail("can't find fun isAtLeast")
TestCase.assertTrue(isAtLeast.javaPsi.hasModifier(JvmModifier.FINAL))
val done = uFile.findElementByTextFromPsi<UMethod>("done", strict = false)
.orFail("can't find fun done")
TestCase.assertTrue(done.javaPsi.hasModifier(JvmModifier.FINAL))
}
fun checkThrowsList(myFixture: JavaCodeInsightTestFixture) {
myFixture.configureByText(
"main.kt", """
......
......@@ -36,6 +36,10 @@ class FirLightClassBehaviorTest : KotlinLightCodeInsightFixtureTestCase(), Light
checkThrowsList(myFixture)
}
fun testFinalModifierOnEnumMembers() {
checkFinalModifierOnEnumMembers(myFixture)
}
fun testComparatorInheritor() {
checkComparatorInheritor(myFixture)
}
......
......@@ -31,6 +31,10 @@ class FE1LightClassBehaviorTest : KotlinLightCodeInsightFixtureTestCase(), Light
checkPropertyAccessorModifierListOffsets(myFixture)
}
fun testFinalModifierOnEnumMembers() {
checkFinalModifierOnEnumMembers(myFixture)
}
fun testThrowsList() {
checkThrowsList(myFixture)
}
......
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