diff --git a/java/java-impl/src/com/intellij/psi/formatter/JavadocWhiteSpaceFormattingStrategy.java b/java/java-impl/src/com/intellij/psi/formatter/JavadocWhiteSpaceFormattingStrategy.java index 28ae06ea33c8..7a95f2d9930f 100644 --- a/java/java-impl/src/com/intellij/psi/formatter/JavadocWhiteSpaceFormattingStrategy.java +++ b/java/java-impl/src/com/intellij/psi/formatter/JavadocWhiteSpaceFormattingStrategy.java @@ -25,6 +25,7 @@ import org.jetbrains.annotations.NotNull; public class JavadocWhiteSpaceFormattingStrategy extends WhiteSpaceFormattingStrategyAdapter { @Override public boolean containsWhitespacesOnly(@NotNull final ASTNode node) { - return node.getElementType() == JavaDocTokenType.DOC_COMMENT_DATA && node.textContains('\n') && node.getText().trim().isEmpty(); + return (node.getElementType() == JavaDocTokenType.DOC_COMMENT_DATA && node.textContains('\n') || + node.getElementType() == JavaDocTokenType.DOC_TAG_VALUE_TOKEN) && node.getText().trim().isEmpty(); } } diff --git a/java/java-impl/src/com/intellij/psi/formatter/java/JavaSpacePropertyProcessor.java b/java/java-impl/src/com/intellij/psi/formatter/java/JavaSpacePropertyProcessor.java index 091c8652f88a..95572b93a7a9 100644 --- a/java/java-impl/src/com/intellij/psi/formatter/java/JavaSpacePropertyProcessor.java +++ b/java/java-impl/src/com/intellij/psi/formatter/java/JavaSpacePropertyProcessor.java @@ -157,7 +157,7 @@ public class JavaSpacePropertyProcessor extends JavaElementVisitor { private void init(ASTNode child) { if (child == null) return; ASTNode treePrev = child.getTreePrev(); - while (treePrev != null && (treePrev.getElementType() == TokenType.WHITE_SPACE || treePrev.getTextLength() == 0)) { + while (treePrev != null && FormatterUtil.containsWhiteSpacesOnly(treePrev)) { treePrev = treePrev.getTreePrev(); } if (treePrev == null) { @@ -1237,16 +1237,16 @@ public class JavaSpacePropertyProcessor extends JavaElementVisitor { else if (myType2 == JavaDocTokenType.DOC_COMMENT_LEADING_ASTERISKS) { createSpaceProperty(false, true, 0); } - else if ((myType1 == JavaDocTokenType.DOC_TAG_VALUE_TOKEN || myType1 == JavaDocElementType.DOC_TAG_VALUE_ELEMENT) && - (myType2 == JavaDocTokenType.DOC_TAG_VALUE_TOKEN || myType2 == JavaDocElementType.DOC_TAG_VALUE_ELEMENT)) { - createSpaceInCode(true); - } else if (myRole1 == ChildRole.COMMA) { createSpaceInCode(mySettings.SPACE_AFTER_COMMA); } else if (myRole2 == ChildRole.COMMA) { createSpaceInCode(mySettings.SPACE_BEFORE_COMMA); } + else if ((myType1 == JavaDocTokenType.DOC_TAG_VALUE_TOKEN || myType1 == JavaDocElementType.DOC_TAG_VALUE_ELEMENT) && + (myType2 == JavaDocTokenType.DOC_TAG_VALUE_TOKEN || myType2 == JavaDocElementType.DOC_TAG_VALUE_ELEMENT)) { + createSpaceInCode(true); + } } @Override diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/source/javadoc/PsiDocTagValueImpl.java b/java/java-psi-impl/src/com/intellij/psi/impl/source/javadoc/PsiDocTagValueImpl.java index 8171850ac156..39037de8cb13 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/source/javadoc/PsiDocTagValueImpl.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/source/javadoc/PsiDocTagValueImpl.java @@ -36,7 +36,8 @@ public class PsiDocTagValueImpl extends CompositePsiElement implements PsiDocTag @Override public int getChildRole(@NotNull ASTNode child) { - if (child.getElementType() == JavaDocTokenType.DOC_TAG_VALUE_COMMA) { + if (child.getElementType() == JavaDocTokenType.DOC_TAG_VALUE_COMMA || + child.getElementType() == JavaDocTokenType.DOC_TAG_VALUE_TOKEN && child.getTextLength() == 1 && child.getChars().charAt(0) == ',') { return ChildRole.COMMA; } diff --git a/java/java-tests/testSrc/com/intellij/java/psi/formatter/java/JavadocFormatterTest.kt b/java/java-tests/testSrc/com/intellij/java/psi/formatter/java/JavadocFormatterTest.kt index a8d3380b2c18..9a306496b45c 100644 --- a/java/java-tests/testSrc/com/intellij/java/psi/formatter/java/JavadocFormatterTest.kt +++ b/java/java-tests/testSrc/com/intellij/java/psi/formatter/java/JavadocFormatterTest.kt @@ -1338,4 +1338,44 @@ public class Test { """ ) } + + fun testIdea205110() { + doTextTest( + """ + package com.test; + + import java.util.HashMap; + import java.util.Map; + + public class GeneralTest { + + /** + * @return Map + */ + private Map test() { + return new HashMap<>(); + } + + } + """.trimIndent(), + + """ + package com.test; + + import java.util.HashMap; + import java.util.Map; + + public class GeneralTest { + + /** + * @return Map + */ + private Map test() { + return new HashMap<>(); + } + + } + """.trimIndent() + ) + } } \ No newline at end of file