From 3069f9ae10d30d0a476d17f6e237473133a298ec Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Fri, 9 Aug 2013 16:58:55 +0200 Subject: [PATCH] IDEA-111735 Change Signature refactoring should not insert generics types into javadoc --- .../source/javadoc/PsiDocMethodOrFieldRef.java | 18 +++++++++--------- .../changeSignature/JavadocGenericsLink.java | 8 ++++++++ .../JavadocGenericsLink_after.java | 10 ++++++++++ .../refactoring/ChangeSignatureTest.java | 7 +++++++ 4 files changed, 34 insertions(+), 9 deletions(-) create mode 100644 java/java-tests/testData/refactoring/changeSignature/JavadocGenericsLink.java create mode 100644 java/java-tests/testData/refactoring/changeSignature/JavadocGenericsLink_after.java 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 ebc3168758e7..a104ac21c353 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 @@ -17,6 +17,7 @@ package com.intellij.psi.impl.source.javadoc; import com.intellij.lang.ASTNode; import com.intellij.openapi.util.TextRange; +import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.*; import com.intellij.psi.impl.source.Constants; import com.intellij.psi.impl.source.SourceTreeToPsiMap; @@ -31,10 +32,8 @@ import com.intellij.psi.scope.processor.FilterScopeProcessor; import com.intellij.psi.util.MethodSignature; import com.intellij.psi.util.MethodSignatureUtil; import com.intellij.psi.util.PsiTreeUtil; -import com.intellij.util.ArrayUtil; -import com.intellij.util.CharTable; -import com.intellij.util.IncorrectOperationException; -import com.intellij.util.SmartList; +import com.intellij.psi.util.TypeConversionUtil; +import com.intellij.util.*; import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; @@ -344,11 +343,12 @@ public class PsiDocMethodOrFieldRef extends CompositePsiElement implements PsiDo if (hasSignature) { newText.append('('); PsiParameter[] parameters = method.getParameterList().getParameters(); - for (int i = 0; i < parameters.length; i++) { - PsiParameter parameter = parameters[i]; - if (i > 0) newText.append(","); - newText.append(parameter.getType().getCanonicalText()); - } + newText.append(StringUtil.join(parameters, new Function() { + @Override + public String fun(PsiParameter parameter) { + return TypeConversionUtil.erasure(parameter.getType()).getCanonicalText(); + } + }, ",")); newText.append(')'); } newText.append("*/"); diff --git a/java/java-tests/testData/refactoring/changeSignature/JavadocGenericsLink.java b/java/java-tests/testData/refactoring/changeSignature/JavadocGenericsLink.java new file mode 100644 index 000000000000..f4fb657aeb43 --- /dev/null +++ b/java/java-tests/testData/refactoring/changeSignature/JavadocGenericsLink.java @@ -0,0 +1,8 @@ +class A { + void method(boolean a){} + + /** + * {@link #method(boolean)} + */ + void bar() {} +} diff --git a/java/java-tests/testData/refactoring/changeSignature/JavadocGenericsLink_after.java b/java/java-tests/testData/refactoring/changeSignature/JavadocGenericsLink_after.java new file mode 100644 index 000000000000..5bcd7ccfd51c --- /dev/null +++ b/java/java-tests/testData/refactoring/changeSignature/JavadocGenericsLink_after.java @@ -0,0 +1,10 @@ +import java.util.List; + +class A { + void method(List y, boolean a){} + + /** + * {@link #method(java.util.List, boolean)} + */ + void bar() {} +} diff --git a/java/java-tests/testSrc/com/intellij/refactoring/ChangeSignatureTest.java b/java/java-tests/testSrc/com/intellij/refactoring/ChangeSignatureTest.java index ff9b795cbb47..b7a5662d820e 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/ChangeSignatureTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/ChangeSignatureTest.java @@ -135,6 +135,13 @@ public class ChangeSignatureTest extends LightRefactoringTestCase { }, false); } + public void testJavadocGenericsLink() throws Exception { + doTest(null, new ParameterInfoImpl[] { + new ParameterInfoImpl(-1, "y", JavaPsiFacade.getElementFactory(getProject()).createTypeFromText("java.util.List", null)), + new ParameterInfoImpl(0, "a", PsiType.BOOLEAN) + }, false); + } + public void testParamNameSameAsFieldName() throws Exception { doTest(null, new ParameterInfoImpl[] { new ParameterInfoImpl(0, "fieldName", PsiType.INT)