From c29dbee65e1e4cb9f758b24d6608b0cd0bfe0736 Mon Sep 17 00:00:00 2001 From: Igor Yakovlev Date: Wed, 10 Jun 2020 17:19:00 +0300 Subject: [PATCH] Cover move method refactoring with registry key (disabled by default) --- idea/resources/META-INF/extensions/ide.xml | 5 +++++ .../move/moveMethod/MoveKotlinMethodHandler.kt | 10 ++++++++++ 2 files changed, 15 insertions(+) diff --git a/idea/resources/META-INF/extensions/ide.xml b/idea/resources/META-INF/extensions/ide.xml index 29bac656f0b..6242950216e 100644 --- a/idea/resources/META-INF/extensions/ide.xml +++ b/idea/resources/META-INF/extensions/ide.xml @@ -128,6 +128,11 @@ defaultValue="false" restartRequired="false"/> + + diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveMethod/MoveKotlinMethodHandler.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveMethod/MoveKotlinMethodHandler.kt index 3224d3bd950..0c5adcde4ff 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveMethod/MoveKotlinMethodHandler.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveMethod/MoveKotlinMethodHandler.kt @@ -2,8 +2,10 @@ package org.jetbrains.kotlin.idea.refactoring.move.moveMethod import com.intellij.openapi.actionSystem.CommonDataKeys import com.intellij.openapi.actionSystem.DataContext +import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.editor.Editor import com.intellij.openapi.project.Project +import com.intellij.openapi.util.registry.Registry import com.intellij.psi.PsiElement import com.intellij.psi.PsiReference import com.intellij.refactoring.move.MoveCallback @@ -18,6 +20,10 @@ import org.jetbrains.kotlin.psi.psiUtil.collectDescendantsOfType import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject import org.jetbrains.kotlin.psi.psiUtil.isObjectLiteral +private const val optionName = "kotlin.enable.move.method.refactoring" +private val refactoringIsDisabled: Boolean + get() = !Registry.`is`(optionName) && !ApplicationManager.getApplication().isUnitTestMode + class MoveKotlinMethodHandler : MoveHandlerDelegate() { private fun showErrorHint(project: Project, dataContext: DataContext?, message: String) { val editor = dataContext?.let { CommonDataKeys.EDITOR.getData(it) } @@ -77,6 +83,7 @@ class MoveKotlinMethodHandler : MoveHandlerDelegate() { } override fun canMove(elements: Array, targetContainer: PsiElement?, reference: PsiReference?): Boolean { + if (refactoringIsDisabled) return false if (elements.size != 1) return false val method = elements[0] as? KtNamedFunction ?: return false val sourceContainer = method.containingClassOrObject @@ -85,10 +92,12 @@ class MoveKotlinMethodHandler : MoveHandlerDelegate() { } override fun isValidTarget(psiElement: PsiElement?, sources: Array): Boolean { + if (refactoringIsDisabled) return false return psiElement is KtClassOrObject && !psiElement.hasModifier(KtTokens.ANNOTATION_KEYWORD) } override fun doMove(project: Project, elements: Array, targetContainer: PsiElement?, callback: MoveCallback?) { + if (refactoringIsDisabled) return if (elements.size != 1) return val method = elements[0] as? KtNamedFunction ?: return val sourceContainer = method.containingClassOrObject @@ -99,6 +108,7 @@ class MoveKotlinMethodHandler : MoveHandlerDelegate() { override fun tryToMove( element: PsiElement, project: Project, dataContext: DataContext?, reference: PsiReference?, editor: Editor? ): Boolean { + if (refactoringIsDisabled) return false if (element is KtNamedFunction) { element.containingClassOrObject?.let { sourceContainer -> if (!sourceContainer.isObjectLiteral()) {