IDEA-107086 Java: suggest private members of a casted class inside itself

This commit is contained in:
peter
2013-07-12 14:58:02 +02:00
parent 55bddfdac4
commit 107d61b2b7
5 changed files with 24 additions and 2 deletions

View File

@@ -362,6 +362,7 @@ public class JavaCompletionUtil {
PsiElement ctx = createContextWithXxxVariable(element, composite);
javaReference = (PsiReferenceExpression) JavaPsiFacade.getElementFactory(element.getProject()).createExpressionFromText("xxx.xxx", ctx);
qualifierType = runtimeQualifier;
processor.setQualifierType(qualifierType);
}
javaReference.processVariants(processor);

View File

@@ -95,8 +95,7 @@ public class JavaCompletionProcessor extends BaseScopeProcessor implements Eleme
}
}
else if (qualifier != null) {
myQualifierType = qualifier.getType();
myQualifierClass = PsiUtil.resolveClassInType(myQualifierType);
setQualifierType(qualifier.getType());
if (myQualifierType == null && qualifier instanceof PsiJavaCodeReferenceElement) {
final PsiElement target = ((PsiJavaCodeReferenceElement)qualifier).resolve();
if (target instanceof PsiClass) {
@@ -256,6 +255,11 @@ public class JavaCompletionProcessor extends BaseScopeProcessor implements Eleme
return false;
}
public void setQualifierType(@Nullable PsiType qualifierType) {
myQualifierType = qualifierType;
myQualifierClass = PsiUtil.resolveClassInClassTypeOnly(qualifierType);
}
@Nullable
public PsiType getQualifierType() {
return myQualifierType;

View File

@@ -0,0 +1,8 @@
class MyData {
private Set<String> myInitialized;
@Override
public boolean equals(Object obj) {
return obj instanceof MyData && myInitialized.equals(obj.myIniti<caret>)
}
}

View File

@@ -0,0 +1,8 @@
class MyData {
private Set<String> myInitialized;
@Override
public boolean equals(Object obj) {
return obj instanceof MyData && myInitialized.equals(((MyData) obj).myInitialized<caret>)
}
}

View File

@@ -918,6 +918,7 @@ public class ListUtils {
public void testDontCastInstanceofedQualifier() throws Throwable { doTest(); }
public void testQualifierCastingWithUnknownAssignments() throws Throwable { doTest(); }
public void testQualifierCastingBeforeLt() throws Throwable { doTest(); }
public void testCastQualifierForPrivateFieldReference() throws Throwable { doTest(); }
public void testNoReturnInTernary() throws Throwable { doTest(); }
public void testOrAssignmentDfa() throws Throwable { doTest(); }