From dde04a403d5fa8aafeda7e58dc2b9718a7545567 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Tue, 15 May 2012 15:05:01 +0400 Subject: [PATCH] preserve javadoc refs during inplace rename (IDEA-85817) --- .../completion/JavaDocCompletionContributor.java | 1 + .../impl/source/javadoc/PsiDocMethodOrFieldRef.java | 12 ------------ .../javaDoc/LinkFromInnerClassToSelfMethod.java | 2 +- .../codeInsight/daemonCodeAnalyzer/javaDoc/See3.java | 2 +- .../daemonCodeAnalyzer/javaDoc/Vararg.java | 2 +- .../daemonCodeAnalyzer/javaDoc/resolve/pkg/See1.java | 8 ++++---- .../renameInplace/MethodWithJavadocRef.java | 11 +++++++++++ .../renameInplace/MethodWithJavadocRef_after.java | 11 +++++++++++ .../refactoring/RenameMembersInplaceTest.java | 4 ++++ 9 files changed, 34 insertions(+), 19 deletions(-) create mode 100644 java/java-tests/testData/refactoring/renameInplace/MethodWithJavadocRef.java create mode 100644 java/java-tests/testData/refactoring/renameInplace/MethodWithJavadocRef_after.java diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaDocCompletionContributor.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaDocCompletionContributor.java index 3a7469a87256..cffb3f0f1762 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaDocCompletionContributor.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaDocCompletionContributor.java @@ -220,6 +220,7 @@ public class JavaDocCompletionContributor extends CompletionContributor { if (context.getCompletionChar() == Lookup.REPLACE_SELECT_CHAR) { final PsiDocTagValue valueElement = tag.getValueElement(); endOffset = valueElement.getTextRange().getEndOffset(); + context.setTailOffset(endOffset); } editor.getDocument().deleteString(afterSharp, endOffset); editor.getCaretModel().moveToOffset(signatureOffset); diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/source/javadoc/PsiDocMethodOrFieldRef.java b/java/java-psi-impl/src/com/intellij/psi/impl/source/javadoc/PsiDocMethodOrFieldRef.java index 91cdd946eb29..c42d906d94cd 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/source/javadoc/PsiDocMethodOrFieldRef.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/source/javadoc/PsiDocMethodOrFieldRef.java @@ -381,18 +381,6 @@ public class PsiDocMethodOrFieldRef extends CompositePsiElement implements PsiDo if (nextSibling != null) { final int startOffset = nextSibling.getTextRange().getStartOffset() - getTextRange().getStartOffset(); int endOffset = nextSibling.getTextRange().getEndOffset() - getTextRange().getStartOffset(); - final PsiElement nextParSibling = nextSibling.getNextSibling(); - if (nextParSibling != null && "(".equals(nextParSibling.getText())) { - endOffset++; - PsiElement nextElement = nextParSibling.getNextSibling(); - if (nextElement != null && SourceTreeToPsiMap.psiToTreeNotNull(nextElement).getElementType() == DOC_TAG_VALUE_TOKEN) { - endOffset += nextElement.getTextLength(); - nextElement = nextElement.getNextSibling(); - } - if (nextElement != null && ")".equals(nextElement.getText())) { - endOffset++; - } - } return new TextRange(startOffset, endOffset); } return new TextRange(getTextLength(), getTextLength()); diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javaDoc/LinkFromInnerClassToSelfMethod.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javaDoc/LinkFromInnerClassToSelfMethod.java index c8a24ca4ee9d..5071c0125218 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javaDoc/LinkFromInnerClassToSelfMethod.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javaDoc/LinkFromInnerClassToSelfMethod.java @@ -2,7 +2,7 @@ class Test { public void i(int ppp) {} /** - * {@link #foo(int)} + * {@link #foo(int)} * {@link #foo()} * {@link #i(int)} */ diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javaDoc/See3.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javaDoc/See3.java index f5e465172ba3..121b6bf585e5 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javaDoc/See3.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javaDoc/See3.java @@ -1,6 +1,6 @@ class Test { /** - * @see #perform(int) + * @see #perform(int) */ public void i() {} diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javaDoc/Vararg.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javaDoc/Vararg.java index 604c85627cc2..5192745c27da 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javaDoc/Vararg.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javaDoc/Vararg.java @@ -1,7 +1,7 @@ public class Test { /** * @see Test#test(String, int...) - * @see Test#test(String, long...) + * @see Test#test(String, long...) **/ void foo() {} diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javaDoc/resolve/pkg/See1.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javaDoc/resolve/pkg/See1.java index 24d1dae563da..fcd58fccc0fc 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javaDoc/resolve/pkg/See1.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javaDoc/resolve/pkg/See1.java @@ -1,10 +1,10 @@ package pkg; /** - * @see #method(B1.C) - * @see #method(B1.C[][]) - * @see #method(B1.C..) - * @see #method(B1.C[) + * @see #method(B1.C) + * @see #method(B1.C[][]) + * @see #method(B1.C..) + * @see #method(B1.C[) */ class A1 { public void method(B1.C[] c) { } diff --git a/java/java-tests/testData/refactoring/renameInplace/MethodWithJavadocRef.java b/java/java-tests/testData/refactoring/renameInplace/MethodWithJavadocRef.java new file mode 100644 index 000000000000..f807afcfe63c --- /dev/null +++ b/java/java-tests/testData/refactoring/renameInplace/MethodWithJavadocRef.java @@ -0,0 +1,11 @@ +public class RefactorBug { + public static void something(int a, float b) { + } + + /** + * @see #something(int, float) + */ + public static void somethingElse() { + + } +} diff --git a/java/java-tests/testData/refactoring/renameInplace/MethodWithJavadocRef_after.java b/java/java-tests/testData/refactoring/renameInplace/MethodWithJavadocRef_after.java new file mode 100644 index 000000000000..3fb1fc23599d --- /dev/null +++ b/java/java-tests/testData/refactoring/renameInplace/MethodWithJavadocRef_after.java @@ -0,0 +1,11 @@ +public class RefactorBug { + public static void bar(int a, float b) { + } + + /** + * @see #bar(int, float) + */ + public static void somethingElse() { + + } +} diff --git a/java/java-tests/testSrc/com/intellij/refactoring/RenameMembersInplaceTest.java b/java/java-tests/testSrc/com/intellij/refactoring/RenameMembersInplaceTest.java index 585216da1f8e..d551d0ea8580 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/RenameMembersInplaceTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/RenameMembersInplaceTest.java @@ -53,6 +53,10 @@ public class RenameMembersInplaceTest extends LightCodeInsightTestCase { public void testClassWithMultipleConstructors() throws Exception { doTestInplaceRename("Bar"); } + + public void testMethodWithJavadocRef() throws Exception { + doTestInplaceRename("bar"); + } public void testConflictingMethodName() throws Exception { try {