diff --git a/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureUsageProcessor.java b/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureUsageProcessor.java index 577ec002e58c..7083aede4b4a 100644 --- a/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureUsageProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureUsageProcessor.java @@ -947,8 +947,9 @@ public class JavaChangeSignatureUsageProcessor implements ChangeSignatureUsagePr RefactoringUtil.fixJavadocsForParams(method, newParameters, pair -> { final PsiParameter parameter = pair.first; final String oldParamName = pair.second; - final int idx = ArrayUtil.find(oldParameterNames, oldParamName); - return idx >= 0 && idx == method.getParameterList().getParameterIndex(parameter) && changeInfo.getNewParameters()[idx].getOldIndex() == idx; + final int oldIdx = ArrayUtil.find(oldParameterNames, oldParamName); + int newIndex = method.getParameterList().getParameterIndex(parameter); + return oldIdx >= 0 && newIndex >= 0 && changeInfo.getNewParameters()[newIndex].getOldIndex() == oldIdx; }, paramName -> ArrayUtil.find(oldParameterNames, paramName) >= 0); } diff --git a/java/java-tests/testData/refactoring/changeSignature/ParamJavadocRenamedReordered.java b/java/java-tests/testData/refactoring/changeSignature/ParamJavadocRenamedReordered.java new file mode 100644 index 000000000000..77faca83f8fa --- /dev/null +++ b/java/java-tests/testData/refactoring/changeSignature/ParamJavadocRenamedReordered.java @@ -0,0 +1,8 @@ +class X { + + /** + * @param a aparam + * @param b bparam + */ + public void mymethod(boolean a, boolean b) { } +} diff --git a/java/java-tests/testData/refactoring/changeSignature/ParamJavadocRenamedReordered_after.java b/java/java-tests/testData/refactoring/changeSignature/ParamJavadocRenamedReordered_after.java new file mode 100644 index 000000000000..dc9349153919 --- /dev/null +++ b/java/java-tests/testData/refactoring/changeSignature/ParamJavadocRenamedReordered_after.java @@ -0,0 +1,9 @@ +class X { + + /** + * @param a aparam + * @param c + * @param b1 bparam + */ + public void mymethod(boolean a, boolean c, boolean b1) { } +} diff --git a/java/java-tests/testSrc/com/intellij/java/refactoring/ChangeSignatureTest.java b/java/java-tests/testSrc/com/intellij/java/refactoring/ChangeSignatureTest.java index 2e3d882359d1..c3613c86b4cf 100644 --- a/java/java-tests/testSrc/com/intellij/java/refactoring/ChangeSignatureTest.java +++ b/java/java-tests/testSrc/com/intellij/java/refactoring/ChangeSignatureTest.java @@ -226,6 +226,14 @@ public class ChangeSignatureTest extends ChangeSignatureBaseTest { }, false); } + public void testParamJavadocRenamedReordered() { + doTest(null, new ParameterInfoImpl[]{ + new ParameterInfoImpl(0, "a", PsiType.BOOLEAN), + new ParameterInfoImpl(-1, "c", PsiType.BOOLEAN), + new ParameterInfoImpl(1, "b1", PsiType.BOOLEAN), + }, false); + } + public void testJavadocNoNewLineInserted() { doTest(null, new ParameterInfoImpl[]{ new ParameterInfoImpl(0, "newArgs", PsiType.DOUBLE),