From 7a4cf98cdd9827646f7ee71d2b5dc0d92efac9b8 Mon Sep 17 00:00:00 2001 From: Andrey Cherkasov Date: Tue, 21 Mar 2023 16:02:03 +0400 Subject: [PATCH] [java-inspections] Blank line should be replaced with

: false positive when multiple blank lines before block tag IDEA-315871 GitOrigin-RevId: 40520ca3deae8894318cd7ef0fde19c9935a4f64 --- .../javaDoc/JavadocBlankLinesInspection.java | 15 +++++++++++---- .../beforeMultipleBlankLinesBeforeBlockTag.java | 12 ++++++++++++ 2 files changed, 23 insertions(+), 4 deletions(-) create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/javadocBlankLines/beforeMultipleBlankLinesBeforeBlockTag.java diff --git a/java/java-impl/src/com/intellij/codeInspection/javaDoc/JavadocBlankLinesInspection.java b/java/java-impl/src/com/intellij/codeInspection/javaDoc/JavadocBlankLinesInspection.java index a00f17641dcf..d9252b81a13e 100644 --- a/java/java-impl/src/com/intellij/codeInspection/javaDoc/JavadocBlankLinesInspection.java +++ b/java/java-impl/src/com/intellij/codeInspection/javaDoc/JavadocBlankLinesInspection.java @@ -74,10 +74,7 @@ public class JavadocBlankLinesInspection extends LocalInspectionTool { } private static boolean isBeforeParagraphOrBlockTag(PsiElement element) { - PsiElement nextSibling = element.getNextSibling(); - if (!(nextSibling instanceof PsiDocToken)) return true; - if (((PsiDocToken)nextSibling).getTokenType() != JavaDocTokenType.DOC_COMMENT_LEADING_ASTERISKS) return true; - nextSibling = nextSibling.getNextSibling(); + PsiElement nextSibling = skipWhitespacesAndLeadingAsterisksForward(element); if (nextSibling == null) return true; String text = nextSibling.getText(); return isNullOrBlockTag(nextSibling) || @@ -85,6 +82,16 @@ public class JavadocBlankLinesInspection extends LocalInspectionTool { isNullOrBlockTag(nextSibling.getNextSibling()); } + private static PsiElement skipWhitespacesAndLeadingAsterisksForward(PsiElement element) { + for (PsiElement e = element.getNextSibling(); e != null; e = e.getNextSibling()) { + if (!(e instanceof PsiWhiteSpace || + e instanceof PsiDocToken docToken && docToken.getTokenType() == JavaDocTokenType.DOC_COMMENT_LEADING_ASTERISKS)) { + return e; + } + } + return null; + } + private static boolean startsWithHtmlBlockTag(String text) { String startTag = HtmlUtil.getStartTag(text); if (startTag == null) return false; diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/javadocBlankLines/beforeMultipleBlankLinesBeforeBlockTag.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/javadocBlankLines/beforeMultipleBlankLinesBeforeBlockTag.java new file mode 100644 index 000000000000..fbf6ff02186d --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/javadocBlankLines/beforeMultipleBlankLinesBeforeBlockTag.java @@ -0,0 +1,12 @@ +// "Insert

" "false" +class Test { + /** + * Answer to the ultimate question of life, the universe, and everything + * + * + * @return The number 42 + */ + int answer() { + return 42; + } +} \ No newline at end of file