do not show "Move to constructor" intention for properties declared in interfaces
This commit is contained in:
committed by
Dmitry Jemerov
parent
b9cfb6b59b
commit
c0ee50a693
+15
-8
@@ -28,6 +28,7 @@ import org.jetbrains.kotlin.descriptors.annotations.KotlinTarget
|
|||||||
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
||||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||||
import org.jetbrains.kotlin.idea.core.ShortenReferences
|
import org.jetbrains.kotlin.idea.core.ShortenReferences
|
||||||
|
import org.jetbrains.kotlin.idea.refactoring.isInterfaceClass
|
||||||
import org.jetbrains.kotlin.idea.search.usagesSearch.descriptor
|
import org.jetbrains.kotlin.idea.search.usagesSearch.descriptor
|
||||||
import org.jetbrains.kotlin.idea.util.CommentSaver
|
import org.jetbrains.kotlin.idea.util.CommentSaver
|
||||||
import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers
|
import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers
|
||||||
@@ -53,14 +54,20 @@ class MovePropertyToConstructorIntention :
|
|||||||
applyTo(property, null)
|
applyTo(property, null)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun isApplicableTo(element: KtProperty, caretOffset: Int): Boolean =
|
override fun isApplicableTo(element: KtProperty, caretOffset: Int): Boolean {
|
||||||
!element.isLocal
|
fun KtProperty.isDeclaredInClass() : Boolean {
|
||||||
&& !element.hasDelegate()
|
val parent = element.getStrictParentOfType<KtClassOrObject>()
|
||||||
&& element.getter == null
|
return parent != null && !parent.isInterfaceClass()
|
||||||
&& element.setter == null
|
}
|
||||||
&& !element.hasModifier(LATEINIT_KEYWORD)
|
|
||||||
&& element.getStrictParentOfType<KtClassOrObject>() is KtClass
|
return !element.isLocal
|
||||||
&& (element.initializer?.isValidInConstructor() ?: true)
|
&& !element.hasDelegate()
|
||||||
|
&& element.getter == null
|
||||||
|
&& element.setter == null
|
||||||
|
&& !element.hasModifier(LATEINIT_KEYWORD)
|
||||||
|
&& (element.isDeclaredInClass())
|
||||||
|
&& (element.initializer?.isValidInConstructor() ?: true)
|
||||||
|
}
|
||||||
|
|
||||||
override fun applyTo(element: KtProperty, editor: Editor?) {
|
override fun applyTo(element: KtProperty, editor: Editor?) {
|
||||||
val parentClass = PsiTreeUtil.getParentOfType(element, KtClass::class.java) ?: return
|
val parentClass = PsiTreeUtil.getParentOfType(element, KtClass::class.java) ?: return
|
||||||
|
|||||||
Reference in New Issue
Block a user