diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavadocCompletionConfidence.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavadocCompletionConfidence.java index b2c1bfa970bd..c1a0ead516e2 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavadocCompletionConfidence.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavadocCompletionConfidence.java @@ -20,11 +20,14 @@ import com.intellij.psi.JavaDocTokenType; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.psi.PsiJavaCodeReferenceElement; +import com.intellij.psi.impl.source.javadoc.PsiDocMethodOrFieldRef; import com.intellij.psi.javadoc.PsiDocTag; -import com.intellij.psi.util.PsiTreeUtil; import com.intellij.util.ThreeState; import org.jetbrains.annotations.NotNull; +import static com.intellij.patterns.PsiJavaPatterns.psiElement; +import static com.intellij.patterns.StandardPatterns.or; + /** * @author peter */ @@ -33,8 +36,9 @@ public class JavadocCompletionConfidence extends CompletionConfidence { @NotNull @Override public ThreeState shouldSkipAutopopup(@NotNull PsiElement contextElement, @NotNull PsiFile psiFile, int offset) { - if (PsiTreeUtil.findElementOfClassAtOffset(psiFile, offset - 1, PsiDocTag.class, false) != null && - PsiTreeUtil.findElementOfClassAtOffset(psiFile, offset - 1, PsiJavaCodeReferenceElement.class, false) != null) { + if (psiElement().inside(PsiDocTag.class).inside( + or(psiElement(PsiJavaCodeReferenceElement.class), psiElement(PsiDocMethodOrFieldRef.class))) + .accepts(contextElement)) { return ThreeState.NO; } if (PlatformPatterns.psiElement(JavaDocTokenType.DOC_TAG_NAME).accepts(contextElement)) { diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/completion/JavaAutoPopupTest.groovy b/java/java-tests/testSrc/com/intellij/codeInsight/completion/JavaAutoPopupTest.groovy index 3c077f1ca801..6be767a7248e 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/completion/JavaAutoPopupTest.groovy +++ b/java/java-tests/testSrc/com/intellij/codeInsight/completion/JavaAutoPopupTest.groovy @@ -259,6 +259,19 @@ class JavaAutoPopupTest extends CompletionAutoPopupTestCase { assert lookup } + public void "test popup in javadoc local reference"() { + myFixture.configureByText("a.java", """ + /** + * {@link #} + */ + class Foo { + void foo() {} + } + """) + type 'f' + assert lookup + } + public void "test autopopup in javadoc tag name"() { myFixture.configureByText("a.java", """ /**