From 748805624970c142474d7b8f03a0a9fd9f17b1a2 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Tue, 9 Oct 2018 15:49:03 +0300 Subject: [PATCH] Use 'canBeInternal' in ChangeVisibilityFix (related to KT-27138) --- .../kotlin/idea/quickfix/ChangeVisibilityFix.kt | 9 ++++++++- .../decreaseVisibility/exposedTypeInAnnotation.kt | 7 +++++++ .../kotlin/idea/quickfix/QuickFixTestGenerated.java | 5 +++++ 3 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 idea/testData/quickfix/decreaseVisibility/exposedTypeInAnnotation.kt diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeVisibilityFix.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeVisibilityFix.kt index 8317a1d8cf7..1d2a5f61657 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeVisibilityFix.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeVisibilityFix.kt @@ -23,6 +23,7 @@ import com.intellij.openapi.project.Project import org.jetbrains.kotlin.descriptors.DeclarationDescriptorWithVisibility import org.jetbrains.kotlin.descriptors.Visibilities import org.jetbrains.kotlin.descriptors.Visibility +import org.jetbrains.kotlin.idea.core.canBeInternal import org.jetbrains.kotlin.idea.core.canBePrivate import org.jetbrains.kotlin.idea.core.canBeProtected import org.jetbrains.kotlin.idea.core.setVisibility @@ -65,7 +66,13 @@ open class ChangeVisibilityFix( } protected class ChangeToInternalFix(element: KtModifierListOwner, elementName: String) : - ChangeVisibilityFix(element, elementName, KtTokens.INTERNAL_KEYWORD) + ChangeVisibilityFix(element, elementName, KtTokens.INTERNAL_KEYWORD) { + + override fun isAvailable(project: Project, editor: Editor?, file: KtFile): Boolean { + val element = element ?: return false + return element.canBeInternal() + } + } protected class ChangeToPrivateFix(element: KtModifierListOwner, elementName: String) : ChangeVisibilityFix(element, elementName, KtTokens.PRIVATE_KEYWORD), HighPriorityAction { diff --git a/idea/testData/quickfix/decreaseVisibility/exposedTypeInAnnotation.kt b/idea/testData/quickfix/decreaseVisibility/exposedTypeInAnnotation.kt new file mode 100644 index 00000000000..c039e031a1e --- /dev/null +++ b/idea/testData/quickfix/decreaseVisibility/exposedTypeInAnnotation.kt @@ -0,0 +1,7 @@ +// "Make '' internal" "false" +// DISABLE-ERRORS +// ACTION: Make 'My' public + +internal class My + +annotation class Your(val x: My) \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java index a2f1c63f492..ca07c38e46a 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java @@ -5240,6 +5240,11 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest { runTest("idea/testData/quickfix/decreaseVisibility/exposedSuperInterfacePrivate.kt"); } + @TestMetadata("exposedTypeInAnnotation.kt") + public void testExposedTypeInAnnotation() throws Exception { + runTest("idea/testData/quickfix/decreaseVisibility/exposedTypeInAnnotation.kt"); + } + @TestMetadata("exposedTypeParameterBound.kt") public void testExposedTypeParameterBound() throws Exception { runTest("idea/testData/quickfix/decreaseVisibility/exposedTypeParameterBound.kt");