diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/javadoc/HtmlTagCanBeJavadocTagInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/javadoc/HtmlTagCanBeJavadocTagInspection.java index 8e09f0f466d7..0e8787f0159a 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/javadoc/HtmlTagCanBeJavadocTagInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/javadoc/HtmlTagCanBeJavadocTagInspection.java @@ -25,6 +25,7 @@ import com.intellij.psi.PsiDocumentManager; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.psi.javadoc.PsiDocToken; +import com.intellij.psi.javadoc.PsiInlineDocTag; import com.intellij.psi.tree.IElementType; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.psi.util.PsiUtil; @@ -148,18 +149,29 @@ public class HtmlTagCanBeJavadocTagInspection extends BaseInspection { } private static boolean hasMatchingCloseTag(PsiElement element, int offset) { + int balance = 0; while (element != null) { @NonNls final String text = element.getText(); final int endIndex = StringUtil.indexOfIgnoreCase(text, "", offset); final int end = endIndex >= 0 ? endIndex : text.length(); - if (containsHtmlTag(text, offset, end) || StringUtil.containsAnyChar(text, "{}", offset, end)) { + if (text.equals("{")) { + balance++; + } + else if (text.equals("}")) { + balance--; + if (balance < 0) return false; + } + if (containsHtmlTag(text, offset, end)) { return false; } if (endIndex >= 0) { - return true; + return balance == 0; } offset = 0; element = element.getNextSibling(); + if (element instanceof PsiInlineDocTag) { + return false; + } } return false; } diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/javadoc/html_tag_can_be_javadoc_tag/HtmlTagCanBeJavadocTag.java b/plugins/InspectionGadgets/test/com/siyeh/igtest/javadoc/html_tag_can_be_javadoc_tag/HtmlTagCanBeJavadocTag.java index 29eb808c9af4..3a563f055e1d 100644 --- a/plugins/InspectionGadgets/test/com/siyeh/igtest/javadoc/html_tag_can_be_javadoc_tag/HtmlTagCanBeJavadocTag.java +++ b/plugins/InspectionGadgets/test/com/siyeh/igtest/javadoc/html_tag_can_be_javadoc_tag/HtmlTagCanBeJavadocTag.java @@ -3,7 +3,7 @@ package com.siyeh.igtest.javadoc.html_tag_can_be_javadoc_tag; class HtmlTagCanBeJavadocTag { /** - * if (something) { this.doSomething(); } + * if (something) { this.doSomething(); } * * asdf * @@ -32,4 +32,10 @@ class HtmlTagCanBeJavadocTag { * x2 = {@link #x x} * 2 */ public int x2 = x*2; + + /** + * {} + * }{ + */ + private String indubitably = null; } \ No newline at end of file