diff --git a/java/java-psi-impl/src/com/intellij/codeInsight/javadoc/JavaDocInfoGenerator.java b/java/java-psi-impl/src/com/intellij/codeInsight/javadoc/JavaDocInfoGenerator.java index f80457c676b8..f2b9583c49b0 100644 --- a/java/java-psi-impl/src/com/intellij/codeInsight/javadoc/JavaDocInfoGenerator.java +++ b/java/java-psi-impl/src/com/intellij/codeInsight/javadoc/JavaDocInfoGenerator.java @@ -323,7 +323,7 @@ public class JavaDocInfoGenerator { } private static boolean generateClassSignature(StringBuilder buffer, PsiClass aClass, boolean generateLink) { - generateAnnotations(buffer, aClass, generateLink); + generateAnnotations(buffer, aClass, generateLink, true); String modifiers = PsiFormatUtil.formatModifiers(aClass, PsiFormatUtilBase.JAVADOC_MODIFIERS_ONLY); if (!modifiers.isEmpty()) { buffer.append(modifiers); @@ -489,7 +489,7 @@ public class JavaDocInfoGenerator { } private static void generateFieldSignature(StringBuilder buffer, PsiField field, boolean generateLink) { - generateAnnotations(buffer, field, generateLink); + generateAnnotations(buffer, field, generateLink, true); String modifiers = PsiFormatUtil.formatModifiers(field, PsiFormatUtilBase.JAVADOC_MODIFIERS_ONLY); if (!modifiers.isEmpty()) { buffer.append(modifiers); @@ -697,24 +697,27 @@ public class JavaDocInfoGenerator { } } - private static void generateAnnotations(@NonNls @NotNull StringBuilder buffer, @NotNull PsiModifierListOwner owner, boolean generateLink) { + private static void generateAnnotations(@NonNls @NotNull StringBuilder buffer, + @NotNull PsiModifierListOwner owner, + boolean generateLink, + boolean splitAnnotations) { final PsiModifierList ownerModifierList = owner.getModifierList(); if (ownerModifierList == null) return; - generateAnnotations(buffer, owner, ownerModifierList.getAnnotations(), false, generateLink); + generateAnnotations(buffer, owner, ownerModifierList.getAnnotations(), false, generateLink, splitAnnotations); PsiAnnotation[] externalAnnotations = ExternalAnnotationsManager.getInstance(owner.getProject()).findExternalAnnotations(owner); if (externalAnnotations == null) { externalAnnotations = new PsiAnnotation[]{}; } PsiAnnotation[] inferredAnnotations = InferredAnnotationsManager.getInstance(owner.getProject()).findInferredAnnotations(owner); externalAnnotations = ArrayUtil.mergeArrays(externalAnnotations, inferredAnnotations, PsiAnnotation.ARRAY_FACTORY); - generateAnnotations(buffer, owner, externalAnnotations, true, generateLink); + generateAnnotations(buffer, owner, externalAnnotations, true, generateLink, splitAnnotations); } private static void generateAnnotations(StringBuilder buffer, PsiModifierListOwner owner, PsiAnnotation[] annotations, boolean external, - boolean generateLink) { + boolean generateLink, boolean splitAnnotations) { PsiManager manager = owner.getManager(); for (PsiAnnotation annotation : annotations) { @@ -763,7 +766,7 @@ public class JavaDocInfoGenerator { buffer.append(""); buffer.append(" "); } - buffer.append("\n"); + if (splitAnnotations) buffer.append("\n"); } } @@ -777,7 +780,7 @@ public class JavaDocInfoGenerator { buffer.append(modifiers); buffer.append(" "); } - generateAnnotations(buffer, parameter, true); + generateAnnotations(buffer, parameter, true, true); generateType(buffer, parameter.getType(), parameter); buffer.append(" "); buffer.append(""); @@ -853,7 +856,7 @@ public class JavaDocInfoGenerator { } private static void generateMethodSignature(StringBuilder buffer, PsiMethod method, boolean generateLink) { - generateAnnotations(buffer, method, generateLink); + generateAnnotations(buffer, method, generateLink, true); String modifiers = PsiFormatUtil.formatModifiers(method, PsiFormatUtilBase.JAVADOC_MODIFIERS_ONLY); int indent = 0; if (!modifiers.isEmpty()) { @@ -886,7 +889,7 @@ public class JavaDocInfoGenerator { PsiParameter[] parms = method.getParameterList().getParameters(); for (int i = 0; i < parms.length; i++) { PsiParameter parm = parms[i]; - generateAnnotations(buffer, parm, generateLink); + generateAnnotations(buffer, parm, generateLink, false); generateType(buffer, parm.getType(), method, generateLink); buffer.append(" "); if (parm.getName() != null) { diff --git a/java/java-tests/testData/codeInsight/javadocIG/annotationsInParams.html b/java/java-tests/testData/codeInsight/javadocIG/annotationsInParams.html new file mode 100644 index 000000000000..c9b08d63be93 --- /dev/null +++ b/java/java-tests/testData/codeInsight/javadocIG/annotationsInParams.html @@ -0,0 +1,2 @@ + Test
public void foo(@Deprecated String s,
+                @Deprecated String p)
\ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/javadocIG/annotationsInParams.java b/java/java-tests/testData/codeInsight/javadocIG/annotationsInParams.java new file mode 100644 index 000000000000..676ff2d3e7cc --- /dev/null +++ b/java/java-tests/testData/codeInsight/javadocIG/annotationsInParams.java @@ -0,0 +1,4 @@ +class Test { + public void foo(@Deprecated String s, + @Deprecated String p){} +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/javadoc/JavaDocInfoGeneratorTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/javadoc/JavaDocInfoGeneratorTest.java index a4de0bcdcab8..8bac921916d3 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/javadoc/JavaDocInfoGeneratorTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/javadoc/JavaDocInfoGeneratorTest.java @@ -80,6 +80,10 @@ public class JavaDocInfoGeneratorTest extends CodeInsightTestCase { doTestField(); } + public void testAnnotationsInParams() throws Exception { + doTestMethod(); + } + public void testLiteral() throws Exception { doTestField(); }