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