diff --git a/java/java-impl/src/com/intellij/refactoring/util/RefactoringUtil.java b/java/java-impl/src/com/intellij/refactoring/util/RefactoringUtil.java index ca14ee175c2c..4cc683a1a5d5 100644 --- a/java/java-impl/src/com/intellij/refactoring/util/RefactoringUtil.java +++ b/java/java-impl/src/com/intellij/refactoring/util/RefactoringUtil.java @@ -1070,13 +1070,13 @@ public class RefactoringUtil { newTags.add(JavaPsiFacade.getInstance(method.getProject()).getElementFactory().createParamTag(parameter.getName(), "")); } } - PsiDocTag anchor = paramTags.length > 0 ? paramTags[paramTags.length - 1] : null; - for (PsiDocTag psiDocTag : newTags) { - anchor = (PsiDocTag)docComment.addAfter(psiDocTag, anchor); - } + PsiElement anchor = paramTags.length > 0 ? paramTags[0].getPrevSibling() : null; for (PsiDocTag paramTag : paramTags) { paramTag.delete(); } + for (PsiDocTag psiDocTag : newTags) { + anchor = docComment.addAfter(psiDocTag, anchor); + } } public static PsiDirectory createPackageDirectoryInSourceRoot(PackageWrapper aPackage, final VirtualFile sourceRoot) diff --git a/java/java-tests/testData/refactoring/changeSignature/ParamJavadoc.java b/java/java-tests/testData/refactoring/changeSignature/ParamJavadoc.java new file mode 100644 index 000000000000..c1e56881daf5 --- /dev/null +++ b/java/java-tests/testData/refactoring/changeSignature/ParamJavadoc.java @@ -0,0 +1,14 @@ +class X { + + /** + * Has a method called {@link #mymethod(int, int)}. + */ + public class TestRefactorLink { + /** + * @return nothing + * @param y yparam + * @param z zparam + */ + public void mymethod(int y, int z) { } + } +} diff --git a/java/java-tests/testData/refactoring/changeSignature/ParamJavadoc_after.java b/java/java-tests/testData/refactoring/changeSignature/ParamJavadoc_after.java new file mode 100644 index 000000000000..6e97d8010abf --- /dev/null +++ b/java/java-tests/testData/refactoring/changeSignature/ParamJavadoc_after.java @@ -0,0 +1,14 @@ +class X { + + /** + * Has a method called {@link #mymethod(int, int)}. + */ + public class TestRefactorLink { + /** + * @return nothing + * @param z zparam + * @param y yparam + */ + public void mymethod(int z, int y) { } + } +} diff --git a/java/java-tests/testSrc/com/intellij/refactoring/ChangeSignatureTest.java b/java/java-tests/testSrc/com/intellij/refactoring/ChangeSignatureTest.java index b5d377c93ef3..941b0f60700c 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/ChangeSignatureTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/ChangeSignatureTest.java @@ -116,6 +116,13 @@ public class ChangeSignatureTest extends LightCodeInsightTestCase { }, false); } + public void testParamJavadoc() throws Exception { + doTest(null, new ParameterInfoImpl[] { + new ParameterInfoImpl(1, "z", PsiType.INT), + new ParameterInfoImpl(0, "y", PsiType.INT) + }, false); + } + public void testSuperCallFromOtherMethod() throws Exception { doTest(null, new ParameterInfoImpl[] { new ParameterInfoImpl(-1, "nnn", PsiType.INT, "-222"), diff --git a/java/java-tests/testSrc/com/intellij/refactoring/IntroduceParameterObjectTest.java b/java/java-tests/testSrc/com/intellij/refactoring/IntroduceParameterObjectTest.java index eef941824027..8c18910bf254 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/IntroduceParameterObjectTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/IntroduceParameterObjectTest.java @@ -54,8 +54,6 @@ public class IntroduceParameterObjectTest extends MultiFileTestCase{ IntroduceParameterObjectProcessor processor = new IntroduceParameterObjectProcessor("Param", "", method, datas, delegate, false, createInner, null, false); processor.run(); - LocalFileSystem.getInstance().refresh(false); - FileDocumentManager.getInstance().saveAllDocuments(); } }); }