Move out of companion object: don't suggest for @JvmField property inside companion object of interface #KT-28443 Fixed
This commit is contained in:
committed by
Mikhail Glukhikh
parent
3ca934e5ea
commit
726b9272f3
+4
-1
@@ -28,8 +28,10 @@ import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde
|
||||
import org.jetbrains.kotlin.idea.refactoring.getUsageContext
|
||||
import org.jetbrains.kotlin.idea.refactoring.isInterfaceClass
|
||||
import org.jetbrains.kotlin.idea.runSynchronouslyWithProgress
|
||||
import org.jetbrains.kotlin.idea.util.application.runReadAction
|
||||
import org.jetbrains.kotlin.idea.util.hasJvmFieldAnnotation
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject
|
||||
import org.jetbrains.kotlin.psi.psiUtil.parents
|
||||
@@ -88,7 +90,8 @@ class MoveMemberOutOfCompanionObjectIntention : MoveMemberOutOfObjectIntention("
|
||||
if (element !is KtNamedFunction && element !is KtProperty && element !is KtClassOrObject) return null
|
||||
val container = element.containingClassOrObject
|
||||
if (!(container is KtObjectDeclaration && container.isCompanion())) return null
|
||||
if (container.containingClassOrObject == null) return null
|
||||
val containingClassOrObject = container.containingClassOrObject ?: return null
|
||||
if (containingClassOrObject.isInterfaceClass() && element.hasJvmFieldAnnotation()) return null
|
||||
return element.nameIdentifier?.textRange
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
// IS_APPLICABLE: false
|
||||
// WITH_RUNTIME
|
||||
|
||||
interface KotlinInterface {
|
||||
companion object {
|
||||
@JvmField
|
||||
val <caret>bar = Any()
|
||||
}
|
||||
}
|
||||
@@ -11899,6 +11899,11 @@ public class IntentionTestGenerated extends AbstractIntentionTest {
|
||||
runTest("idea/testData/intentions/moveOutOfCompanion/companionAsImplicitReceiver.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("hasJvmFieldInInterface.kt")
|
||||
public void testHasJvmFieldInInterface() throws Exception {
|
||||
runTest("idea/testData/intentions/moveOutOfCompanion/hasJvmFieldInInterface.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("moveAndDropCompanion.kt")
|
||||
public void testMoveAndDropCompanion() throws Exception {
|
||||
runTest("idea/testData/intentions/moveOutOfCompanion/moveAndDropCompanion.kt");
|
||||
|
||||
Reference in New Issue
Block a user