when detect inaccessible classes in static context take into account NewExpression qualifiers

This commit is contained in:
anna
2012-12-06 11:01:29 +01:00
parent da3bb33885
commit 7bf7cb9e6f
2 changed files with 29 additions and 1 deletions
@@ -905,7 +905,23 @@ public class HighlightVisitorImpl extends JavaElementVisitor implements Highligh
final PsiClass aClass = ((PsiClass)resolved).getContainingClass();
if (aClass != null) {
final PsiElement qualifier = ref.getQualifier();
final PsiElement place = qualifier instanceof PsiJavaCodeReferenceElement ? ((PsiJavaCodeReferenceElement)qualifier).resolve() : ref;
final PsiElement place;
if (qualifier instanceof PsiJavaCodeReferenceElement) {
place = ((PsiJavaCodeReferenceElement)qualifier).resolve();
}
else {
if (parent instanceof PsiNewExpression) {
final PsiExpression newQualifier = ((PsiNewExpression)parent).getQualifier();
if (newQualifier != null) {
place = PsiUtil.resolveClassInType(newQualifier.getType());
} else {
place = ref;
}
}
else {
place = ref;
}
}
if (PsiTreeUtil.isAncestor(aClass, place, false) && aClass.hasTypeParameters()) {
myHolder.add(HighlightClassUtil.checkCreateInnerClassFromStaticContext(ref, place, (PsiClass)resolved));
}
@@ -48,3 +48,15 @@ class MyTest1 {
}
}
}
class MyTest2<T> {
static class A {
private MyTest2 myTest;
public Object foo() {
return myTest.new Bar();
}
}
class Bar {}
}