diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/source/javadoc/PsiDocMethodOrFieldRef.java b/java/java-psi-impl/src/com/intellij/psi/impl/source/javadoc/PsiDocMethodOrFieldRef.java index c42d906d94cd..a90e33c031cd 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/source/javadoc/PsiDocMethodOrFieldRef.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/source/javadoc/PsiDocMethodOrFieldRef.java @@ -253,10 +253,11 @@ public class PsiDocMethodOrFieldRef extends CompositePsiElement implements PsiDo @NotNull public PsiElement[] getVariants(){ final List vars = new ArrayList(); - final PsiElement scope = getScope(); - if (scope != null) { + PsiClass scope = getScope(); + while (scope != null) { ContainerUtil.addAll(vars, getAllMethods(scope, PsiDocMethodOrFieldRef.this)); ContainerUtil.addAll(vars, getAllVariables(scope, PsiDocMethodOrFieldRef.this)); + scope = scope.getContainingClass(); } return vars.toArray(new PsiModifierListOwner[vars.size()]); } diff --git a/java/java-tests/testData/codeInsight/completion/javadoc/FieldReferenceInInnerClassJavadoc.java b/java/java-tests/testData/codeInsight/completion/javadoc/FieldReferenceInInnerClassJavadoc.java new file mode 100644 index 000000000000..07e48cec770b --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/javadoc/FieldReferenceInInnerClassJavadoc.java @@ -0,0 +1,10 @@ +public class TestClass { + + public static final int MY_CONSTANT = 0; + + /** + * {@link #MY + */ + public class Inner {} + +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/completion/javadoc/FieldReferenceInInnerClassJavadoc_after.java b/java/java-tests/testData/codeInsight/completion/javadoc/FieldReferenceInInnerClassJavadoc_after.java new file mode 100644 index 000000000000..153dc0e51140 --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/javadoc/FieldReferenceInInnerClassJavadoc_after.java @@ -0,0 +1,10 @@ +public class TestClass { + + public static final int MY_CONSTANT = 0; + + /** + * {@link #MY_CONSTANT + */ + public class Inner {} + +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/completion/JavadocCompletionTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/completion/JavadocCompletionTest.java index b7fb373b9024..12ed03552923 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/completion/JavadocCompletionTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/completion/JavadocCompletionTest.java @@ -176,6 +176,10 @@ public class JavadocCompletionTest extends LightFixtureCompletionTestCase { doTest(); } + public void testFieldReferenceInInnerClassJavadoc() throws Throwable { + doTest(); + } + public void testShortenClassReference() throws Throwable { doTest(); } public void testQualifiedClassReference() throws Throwable { configureByFile(getTestName(false) + ".java");