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