Make visible now suggests all possible visibilities
This commit is contained in:
committed by
Mikhail Glukhikh
parent
d5b9a336a3
commit
8938752cf9
@@ -32,21 +32,21 @@ import org.jetbrains.kotlin.resolve.DescriptorUtils
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.module
|
||||
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
|
||||
|
||||
object MakeVisibleFactory : KotlinSingleIntentionActionFactory() {
|
||||
|
||||
override fun createAction(diagnostic: Diagnostic): IntentionAction? {
|
||||
val element = diagnostic.psiElement as? KtElement ?: return null
|
||||
object MakeVisibleFactory : KotlinIntentionActionsFactory() {
|
||||
override fun doCreateActions(diagnostic: Diagnostic): List<IntentionAction> {
|
||||
val element = diagnostic.psiElement as? KtElement ?: return emptyList()
|
||||
val context = element.analyze(BodyResolveMode.PARTIAL)
|
||||
val usageModule = context.get(BindingContext.FILE_TO_PACKAGE_FRAGMENT, element.getContainingKtFile())?.module
|
||||
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
val factory = diagnostic.factory as DiagnosticFactory3<*, DeclarationDescriptor, *, DeclarationDescriptor>
|
||||
val descriptor = factory.cast(diagnostic).c as? DeclarationDescriptorWithVisibility ?: return null
|
||||
val declaration = DescriptorToSourceUtils.getSourceFromDescriptor(descriptor) as? KtModifierListOwner ?: return null
|
||||
val descriptor = factory.cast(diagnostic).c as? DeclarationDescriptorWithVisibility ?: return emptyList()
|
||||
val declaration = DescriptorToSourceUtils.getSourceFromDescriptor(descriptor) as? KtModifierListOwner ?: return emptyList()
|
||||
|
||||
val module = DescriptorUtils.getContainingModule(descriptor)
|
||||
val targetVisibility = if (module != usageModule || descriptor.visibility != PRIVATE) PUBLIC else INTERNAL
|
||||
val targetVisibilities = if (module != usageModule || descriptor.visibility != PRIVATE) listOf(PUBLIC)
|
||||
else listOf(PUBLIC, INTERNAL)
|
||||
|
||||
return ChangeVisibilityFix.create(declaration, descriptor, targetVisibility)
|
||||
return targetVisibilities.mapNotNull { ChangeVisibilityFix.create(declaration, descriptor, it) }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
// "Make x public" "true"
|
||||
class First(private val x: Int)
|
||||
|
||||
class Second(f: First) {
|
||||
val y = f.<caret>x
|
||||
}
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
// "Make x public" "true"
|
||||
class First(val x: Int)
|
||||
|
||||
class Second(f: First) {
|
||||
val y = f.x
|
||||
}
|
||||
@@ -4872,6 +4872,12 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest {
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("privateMemberToPublicSingleFile.kt")
|
||||
public void testPrivateMemberToPublicSingleFile() throws Exception {
|
||||
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/increaseVisibility/privateMemberToPublicSingleFile.kt");
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("protectedMemberToPublicSingleFile.kt")
|
||||
public void testProtectedMemberToPublicSingleFile() throws Exception {
|
||||
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/increaseVisibility/protectedMemberToPublicSingleFile.kt");
|
||||
|
||||
Reference in New Issue
Block a user