diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/scope/JavaCompletionProcessor.java b/java/java-impl/src/com/intellij/codeInsight/completion/scope/JavaCompletionProcessor.java index 4e13baf779f2..b867d062c1da 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/scope/JavaCompletionProcessor.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/scope/JavaCompletionProcessor.java @@ -73,6 +73,7 @@ public class JavaCompletionProcessor extends BaseScopeProcessor implements Eleme private final PsiElement myScope; private final ElementFilter myFilter; private boolean myMembersFlag = false; + private boolean myQualified = false; private PsiType myQualifierType = null; private PsiClass myQualifierClass = null; private final Condition myMatcher; @@ -108,6 +109,7 @@ public class JavaCompletionProcessor extends BaseScopeProcessor implements Eleme } } else if (qualifier != null) { + myQualified = true; setQualifierType(qualifier.getType()); if (myQualifierType == null && qualifier instanceof PsiJavaCodeReferenceElement) { final PsiElement target = ((PsiJavaCodeReferenceElement)qualifier).resolve(); @@ -304,7 +306,7 @@ public class JavaCompletionProcessor extends BaseScopeProcessor implements Eleme if (!(element instanceof PsiMember)) return true; PsiMember member = (PsiMember)element; - PsiClass accessObjectClass = member instanceof PsiClass ? null : myQualifierClass; + PsiClass accessObjectClass = myQualified ? myQualifierClass : null; return JavaPsiFacade.getInstance(element.getProject()).getResolveHelper().isAccessible(member, member.getModifierList(), myElement, accessObjectClass, myDeclarationHolder); } diff --git a/java/java-tests/testData/codeInsight/completion/normal/ProtectedFieldInAnotherPackage.java b/java/java-tests/testData/codeInsight/completion/normal/ProtectedFieldInAnotherPackage.java new file mode 100644 index 000000000000..9c6799d79ca8 --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/normal/ProtectedFieldInAnotherPackage.java @@ -0,0 +1,11 @@ +class Zoo extends foo.Super { + void foo() { + new Runnable() { + @Override + public void run() { + myStr + } + }; + } + +} diff --git a/java/java-tests/testData/codeInsight/completion/normal/ProtectedFieldInAnotherPackage_after.java b/java/java-tests/testData/codeInsight/completion/normal/ProtectedFieldInAnotherPackage_after.java new file mode 100644 index 000000000000..36e7e5907116 --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/normal/ProtectedFieldInAnotherPackage_after.java @@ -0,0 +1,11 @@ +class Zoo extends foo.Super { + void foo() { + new Runnable() { + @Override + public void run() { + myString + } + }; + } + +} diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionTest.groovy b/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionTest.groovy index cbb86bb2fed6..f369af8617b8 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionTest.groovy +++ b/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionTest.groovy @@ -1451,4 +1451,9 @@ class Bar { assertStringItems('abcdefgXxx') } + public void testProtectedFieldInAnotherPackage() { + myFixture.addClass("package foo; public class Super { protected String myString; }"); + doTest() + } + }