correctly suggest protected methods after Xxx.super.

This commit is contained in:
peter
2011-01-26 16:34:23 +01:00
parent e56ee81ce2
commit f46268d4c8
4 changed files with 34 additions and 2 deletions

View File

@@ -80,9 +80,15 @@ public class JavaCompletionProcessor extends BaseScopeProcessor implements Eleme
if (elementParent instanceof PsiReferenceExpression) {
PsiExpression qualifier = ((PsiReferenceExpression)elementParent).getQualifierExpression();
if (qualifier instanceof PsiSuperExpression) {
myQualifierClass = JavaResolveUtil.getContextClass(myElement);
final PsiJavaCodeReferenceElement qSuper = ((PsiSuperExpression)qualifier).getQualifier();
if (qSuper == null) {
myQualifierClass = JavaResolveUtil.getContextClass(myElement);
} else {
final PsiElement target = qSuper.resolve();
myQualifierClass = target instanceof PsiClass ? (PsiClass)target : null;
}
if (myQualifierClass != null) {
myQualifierType = JavaPsiFacade.getInstance(myElement.getProject()).getElementFactory().createType(myQualifierClass);
myQualifierType = JavaPsiFacade.getInstance(element.getProject()).getElementFactory().createType(myQualifierClass);
}
}
else if (qualifier != null) {

View File

@@ -0,0 +1,9 @@
class BarImpl extends foo.Bar {
{
new Runnable() {
public void run() {
BarImpl.super.fo<caret>
}
};
}
}

View File

@@ -0,0 +1,9 @@
class BarImpl extends foo.Bar {
{
new Runnable() {
public void run() {
BarImpl.super.foo();<caret>
}
};
}
}

View File

@@ -832,6 +832,14 @@ public class NormalCompletionTest extends LightFixtureCompletionTestCase {
public void testOnlyAnnotationsAfterAt() throws Throwable { doTest() }
public void testOnlyExceptionsInCatch() throws Throwable { doTest() }
public void testSuperProtectedMethod() throws Throwable {
myFixture.addClass """package foo;
public class Bar {
protected void foo() { }
}"""
doTest()
}
public void testTopLevelClassesFromPackaged() throws Throwable {
myFixture.addClass "public class Fooooo {}"
final text = "package foo; class Bar { Fooo<caret> }"