IDEA-122519 No enclosing instance of type XXX in scope

This commit is contained in:
Anna Kozlova
2014-03-20 15:25:53 +01:00
parent b7117826fa
commit 5461aa27e4
3 changed files with 22 additions and 1 deletions
@@ -786,7 +786,7 @@ public class HighlightClassUtil {
if (PsiKeyword.THIS.equals(methodCallExpression.getMethodExpression().getReferenceName())) continue;
PsiReferenceExpression referenceExpression = methodCallExpression.getMethodExpression();
PsiExpression qualifierExpression = PsiUtil.skipParenthesizedExprDown(referenceExpression.getQualifierExpression());
if (!(qualifierExpression instanceof PsiReferenceExpression) && !(qualifierExpression instanceof PsiNewExpression)) return false;
if (!(qualifierExpression instanceof PsiReferenceExpression) && !(qualifierExpression instanceof PsiCallExpression)) return false;
PsiType type = qualifierExpression.getType();
if (!(type instanceof PsiClassType)) return false;
PsiClass resolved = ((PsiClassType)type).resolve();
@@ -0,0 +1,20 @@
class ClassA {
public abstract class InnerAbstractA {
}
}
class ClassC {
static ClassA classA = new ClassA();
public static ClassA getClassA() {
return classA;
}
}
class ClassB {
public static class InnerClassA extends ClassA.InnerAbstractA {
public InnerClassA() {
ClassC.getClassA().super();
}
}
}
@@ -165,6 +165,7 @@ public class LightAdvHighlightingJdk7Test extends LightDaemonAnalyzerTestCase {
public void testUncheckedWarningIDEA26738() { doTest(true, false); }
public void testUncheckedWarningIDEA99536() { doTest(true, false); }
public void testEnclosingInstance() { doTest(false, false); }
public void testIDEA122519EnclosingInstance() { doTest(false, false); }
public void testWrongArgsAndUnknownTypeParams() { doTest(false, false); }
public void testAmbiguousMethodCallIDEA97983() { doTest(false, false); }
public void testAmbiguousMethodCallIDEA100314() { doTest(false, false); }