diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KotlinLightMethodForDeclaration.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KotlinLightMethodForDeclaration.kt index 6a1381f2958..d3a9f5738ea 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KotlinLightMethodForDeclaration.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KotlinLightMethodForDeclaration.kt @@ -65,7 +65,7 @@ open public class KotlinLightMethodForDeclaration( }, false) } - override fun getNavigationElement(): PsiElement = origin + override fun getNavigationElement(): PsiElement = getOrigin() override fun getOriginalElement(): PsiElement = origin override fun getDelegate(): PsiMethod = delegate diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KotlinLightParameter.java b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KotlinLightParameter.java index e3d36f6cdb6..c115d6bbddb 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KotlinLightParameter.java +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KotlinLightParameter.java @@ -17,13 +17,12 @@ package org.jetbrains.kotlin.asJava; import com.intellij.lang.Language; -import com.intellij.psi.PsiAnnotationOwner; -import com.intellij.psi.PsiFile; -import com.intellij.psi.PsiModifierList; -import com.intellij.psi.PsiParameter; +import com.intellij.psi.*; import com.intellij.psi.search.GlobalSearchScope; import com.intellij.psi.search.SearchScope; import com.intellij.util.ArrayUtil; +import com.intellij.util.IncorrectOperationException; +import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.kotlin.idea.JetLanguage; @@ -103,6 +102,22 @@ public class KotlinLightParameter extends LightParameter implements KotlinLightE return setter != null ? setter.getParameter() : null; } + @NotNull + @Override + public PsiElement getNavigationElement() { + JetParameter origin = getOrigin(); + return origin != null ? origin : super.getNavigationElement(); + } + + @Override + public PsiElement setName(@NonNls @NotNull String name) throws IncorrectOperationException { + JetParameter origin = getOrigin(); + if (origin != null) { + origin.setName(name); + } + return this; + } + @Override public PsiFile getContainingFile() { JetDeclaration declaration = method.getOrigin(); diff --git a/idea/testData/refactoring/rename/automaticRenamerJavaParameter/after/JavaSuper.java b/idea/testData/refactoring/rename/automaticRenamerJavaParameter/after/JavaSuper.java new file mode 100644 index 00000000000..d02f9e764f2 --- /dev/null +++ b/idea/testData/refactoring/rename/automaticRenamerJavaParameter/after/JavaSuper.java @@ -0,0 +1,4 @@ +class JavaSuper { + void foo(int /*rename*/aa, String b) { + } +} \ No newline at end of file diff --git a/idea/testData/refactoring/rename/automaticRenamerJavaParameter/after/KotlinSub.kt b/idea/testData/refactoring/rename/automaticRenamerJavaParameter/after/KotlinSub.kt new file mode 100644 index 00000000000..168c4df200a --- /dev/null +++ b/idea/testData/refactoring/rename/automaticRenamerJavaParameter/after/KotlinSub.kt @@ -0,0 +1,4 @@ +class KotlinSub : JavaSuper() { + override fun foo(aa: Int, b: String) { + } +} diff --git a/idea/testData/refactoring/rename/automaticRenamerJavaParameter/before/JavaSuper.java b/idea/testData/refactoring/rename/automaticRenamerJavaParameter/before/JavaSuper.java new file mode 100644 index 00000000000..18a166422ad --- /dev/null +++ b/idea/testData/refactoring/rename/automaticRenamerJavaParameter/before/JavaSuper.java @@ -0,0 +1,4 @@ +class JavaSuper { + void foo(int /*rename*/a, String b) { + } +} \ No newline at end of file diff --git a/idea/testData/refactoring/rename/automaticRenamerJavaParameter/before/KotlinSub.kt b/idea/testData/refactoring/rename/automaticRenamerJavaParameter/before/KotlinSub.kt new file mode 100644 index 00000000000..d7797fbcffb --- /dev/null +++ b/idea/testData/refactoring/rename/automaticRenamerJavaParameter/before/KotlinSub.kt @@ -0,0 +1,4 @@ +class KotlinSub : JavaSuper() { + override fun foo(a: Int, b: String) { + } +} diff --git a/idea/testData/refactoring/rename/automaticRenamerJavaParameter/parameter.test b/idea/testData/refactoring/rename/automaticRenamerJavaParameter/parameter.test new file mode 100644 index 00000000000..db337bf3430 --- /dev/null +++ b/idea/testData/refactoring/rename/automaticRenamerJavaParameter/parameter.test @@ -0,0 +1,5 @@ +{ + "type": "MARKED_ELEMENT", + "newName": "aa", + "mainFile": "JavaSuper.java" +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/refactoring/rename/RenameTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/refactoring/rename/RenameTestGenerated.java index 314efadff37..1df593a52d9 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/refactoring/rename/RenameTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/refactoring/rename/RenameTestGenerated.java @@ -47,6 +47,12 @@ public class RenameTestGenerated extends AbstractRenameTest { doTest(fileName); } + @TestMetadata("automaticRenamerJavaParameter/parameter.test") + public void testAutomaticRenamerJavaParameter_Parameter() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/refactoring/rename/automaticRenamerJavaParameter/parameter.test"); + doTest(fileName); + } + @TestMetadata("automaticRenamerOverloads/package.test") public void testAutomaticRenamerOverloads_Package() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/refactoring/rename/automaticRenamerOverloads/package.test");