diff --git a/idea/src/META-INF/plugin.xml b/idea/src/META-INF/plugin.xml index b8441bc8b11..55650195fbd 100644 --- a/idea/src/META-INF/plugin.xml +++ b/idea/src/META-INF/plugin.xml @@ -306,6 +306,7 @@ + diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/AutomaticVariableRenamer.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/AutomaticVariableRenamer.kt index 6880307c00c..3c30161bec2 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/AutomaticVariableRenamer.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/AutomaticVariableRenamer.kt @@ -25,6 +25,8 @@ import com.intellij.refactoring.RefactoringBundle import com.intellij.refactoring.rename.naming.AutomaticRenamer import com.intellij.refactoring.rename.naming.AutomaticRenamerFactory import com.intellij.usageView.UsageInfo +import org.jetbrains.kotlin.asJava.LightClassUtil +import org.jetbrains.kotlin.asJava.toLightClass import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.descriptors.VariableDescriptor @@ -37,6 +39,7 @@ import org.jetbrains.kotlin.psi.psiUtil.isAncestor import org.jetbrains.kotlin.resolve.DescriptorUtils import org.jetbrains.kotlin.types.JetType import java.util.ArrayList +import java.util.LinkedHashMap public class AutomaticVariableRenamer(klass: JetClass, newClassName: String, usages: Collection) : AutomaticRenamer() { private val toUnpluralize = ArrayList() @@ -107,5 +110,18 @@ public class AutomaticVariableRenamerFactory: AutomaticRenamerFactory { override fun isEnabled() = JavaRefactoringSettings.getInstance().isToRenameVariables() override fun setEnabled(enabled: Boolean) = JavaRefactoringSettings.getInstance().setRenameVariables(enabled) + override fun getOptionName() = RefactoringBundle.message("rename.variables") +} + +public class AutomaticVariableInJavaRenamerFactory: AutomaticRenamerFactory { + override fun isApplicable(element: PsiElement) = element is JetClass && element.toLightClass() != null + + override fun createRenamer(element: PsiElement, newName: String, usages: Collection) = + // Using java variable renamer for java usages + com.intellij.refactoring.rename.naming.AutomaticVariableRenamer((element as JetClass).toLightClass()!!, newName, usages) + + override fun isEnabled() = JavaRefactoringSettings.getInstance().isToRenameVariables() + override fun setEnabled(enabled: Boolean) = JavaRefactoringSettings.getInstance().setRenameVariables(enabled) + override fun getOptionName() = RefactoringBundle.message("rename.variables") } \ No newline at end of file diff --git a/idea/testData/refactoring/rename/automaticRenamer/after/javaUsage.java b/idea/testData/refactoring/rename/automaticRenamer/after/javaUsage.java index 39a29d62929..a20bf9b65b1 100644 --- a/idea/testData/refactoring/rename/automaticRenamer/after/javaUsage.java +++ b/idea/testData/refactoring/rename/automaticRenamer/after/javaUsage.java @@ -1,3 +1,9 @@ class JavaBar extends Bar { +} + +class Usage { + public static void main(String[] args) { + Bar bar = null; + } } \ No newline at end of file diff --git a/idea/testData/refactoring/rename/automaticRenamer/before/javaUsage.java b/idea/testData/refactoring/rename/automaticRenamer/before/javaUsage.java index 0b5052a974d..de4fb650d51 100644 --- a/idea/testData/refactoring/rename/automaticRenamer/before/javaUsage.java +++ b/idea/testData/refactoring/rename/automaticRenamer/before/javaUsage.java @@ -1,3 +1,9 @@ class JavaFoo extends Foo { +} + +class Usage { + public static void main(String[] args) { + Foo foo = null; + } } \ No newline at end of file