181: KotlinElementActionsFactory: makes elements public by removing other visibility modifiers
This commit is contained in:
committed by
Nikolay Krasko
parent
e48b905075
commit
26a0dbe910
+10
-4
@@ -59,6 +59,7 @@ import org.jetbrains.kotlin.load.java.structure.impl.JavaTypeParameterImpl
|
|||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
|
import org.jetbrains.kotlin.psi.psiUtil.visibilityModifierType
|
||||||
import org.jetbrains.kotlin.resolve.annotations.JVM_FIELD_ANNOTATION_FQ_NAME
|
import org.jetbrains.kotlin.resolve.annotations.JVM_FIELD_ANNOTATION_FQ_NAME
|
||||||
import org.jetbrains.kotlin.resolve.annotations.JVM_STATIC_ANNOTATION_FQ_NAME
|
import org.jetbrains.kotlin.resolve.annotations.JVM_STATIC_ANNOTATION_FQ_NAME
|
||||||
import org.jetbrains.kotlin.types.KotlinType
|
import org.jetbrains.kotlin.types.KotlinType
|
||||||
@@ -244,10 +245,15 @@ class KotlinElementActionsFactory : JvmElementActionsFactory() {
|
|||||||
|
|
||||||
val modifier = request.modifier
|
val modifier = request.modifier
|
||||||
val shouldPresent = request.shouldPresent
|
val shouldPresent = request.shouldPresent
|
||||||
val (kToken, shouldPresentMapped) = if (JvmModifier.FINAL == modifier)
|
//TODO: make similar to `createAddMethodActions`
|
||||||
KtTokens.OPEN_KEYWORD to !shouldPresent
|
val (kToken, shouldPresentMapped) = when {
|
||||||
else
|
modifier == JvmModifier.FINAL -> KtTokens.OPEN_KEYWORD to !shouldPresent
|
||||||
javaPsiModifiersMapping[modifier] to shouldPresent
|
modifier == JvmModifier.PUBLIC && shouldPresent ->
|
||||||
|
kModifierOwner.visibilityModifierType()
|
||||||
|
?.takeIf { it != KtTokens.DEFAULT_VISIBILITY_KEYWORD }
|
||||||
|
?.let { it to false } ?: return emptyList()
|
||||||
|
else -> javaPsiModifiersMapping[modifier] to shouldPresent
|
||||||
|
}
|
||||||
if (kToken == null) return emptyList()
|
if (kToken == null) return emptyList()
|
||||||
|
|
||||||
val action = if (shouldPresentMapped)
|
val action = if (shouldPresentMapped)
|
||||||
|
|||||||
@@ -111,13 +111,80 @@ class CommonIntentionActionsTest : LightPlatformCodeInsightFixtureTestCase() {
|
|||||||
""".trim(), true)
|
""".trim(), true)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun testMakePrivatePublic() {
|
||||||
|
myFixture.configureByText(
|
||||||
|
"foo.kt", """class Foo {
|
||||||
|
| private fun <caret>bar(){}
|
||||||
|
|}""".trim().trimMargin()
|
||||||
|
)
|
||||||
|
|
||||||
|
myFixture.launchAction(
|
||||||
|
createModifierActions(
|
||||||
|
myFixture.atCaret(), MemberRequest.Modifier(JvmModifier.PUBLIC, true)
|
||||||
|
).findWithText("Remove 'private' modifier")
|
||||||
|
)
|
||||||
|
myFixture.checkResult(
|
||||||
|
"""class Foo {
|
||||||
|
| fun <caret>bar(){}
|
||||||
|
|}""".trim().trimMargin(), true
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun testMakeProtectedPublic() {
|
||||||
|
myFixture.configureByText(
|
||||||
|
"foo.kt", """open class Foo {
|
||||||
|
| protected fun <caret>bar(){}
|
||||||
|
|}""".trim().trimMargin()
|
||||||
|
)
|
||||||
|
|
||||||
|
myFixture.launchAction(
|
||||||
|
createModifierActions(
|
||||||
|
myFixture.atCaret(), MemberRequest.Modifier(JvmModifier.PUBLIC, true)
|
||||||
|
).findWithText("Remove 'protected' modifier")
|
||||||
|
)
|
||||||
|
myFixture.checkResult(
|
||||||
|
"""open class Foo {
|
||||||
|
| fun <caret>bar(){}
|
||||||
|
|}""".trim().trimMargin(), true
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun testMakeInternalPublic() {
|
||||||
|
myFixture.configureByText(
|
||||||
|
"foo.kt", """class Foo {
|
||||||
|
| internal fun <caret>bar(){}
|
||||||
|
|}""".trim().trimMargin()
|
||||||
|
)
|
||||||
|
|
||||||
|
myFixture.launchAction(
|
||||||
|
createModifierActions(
|
||||||
|
myFixture.atCaret(), MemberRequest.Modifier(JvmModifier.PUBLIC, true)
|
||||||
|
).findWithText("Remove 'internal' modifier")
|
||||||
|
)
|
||||||
|
myFixture.checkResult(
|
||||||
|
"""class Foo {
|
||||||
|
| fun <caret>bar(){}
|
||||||
|
|}""".trim().trimMargin(), true
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun testDontMakePublicPublic() {
|
||||||
|
myFixture.configureByText(
|
||||||
|
"foo.kt", """class Foo {
|
||||||
|
| fun <caret>bar(){}
|
||||||
|
|}""".trim().trimMargin()
|
||||||
|
)
|
||||||
|
|
||||||
|
assertEmpty(createModifierActions(myFixture.atCaret(), MemberRequest.Modifier(JvmModifier.PUBLIC, true)))
|
||||||
|
}
|
||||||
|
|
||||||
fun testDontMakeFunInObjectsOpen() {
|
fun testDontMakeFunInObjectsOpen() {
|
||||||
myFixture.configureByText("foo.kt", """
|
myFixture.configureByText("foo.kt", """
|
||||||
object Foo {
|
object Foo {
|
||||||
fun bar<caret>(){}
|
fun bar<caret>(){}
|
||||||
}
|
}
|
||||||
""".trim())
|
""".trim())
|
||||||
Assert.assertTrue(createModifierActions(myFixture.atCaret(), MemberRequest.Modifier(JvmModifier.FINAL, false)).isEmpty())
|
assertEmpty(createModifierActions(myFixture.atCaret(), MemberRequest.Modifier(JvmModifier.FINAL, false)))
|
||||||
}
|
}
|
||||||
|
|
||||||
fun testAddVoidVoidMethod() {
|
fun testAddVoidVoidMethod() {
|
||||||
|
|||||||
Reference in New Issue
Block a user