don't report subclass references inside lambdas in StaticInitializerReferencesSubClassInspection

This commit is contained in:
peter
2016-06-29 19:35:15 +02:00
parent aad2d50e38
commit a08d89082e
2 changed files with 7 additions and 1 deletions
@@ -68,7 +68,12 @@ public class StaticInitializerReferencesSubClassInspection extends BaseJavaBatch
scope.accept(new PsiRecursiveElementWalkingVisitor() {
@Override
public void visitElement(PsiElement element) {
if (element instanceof PsiClass || element instanceof PsiReferenceParameterList || element instanceof PsiTypeElement) return;
if (element instanceof PsiClass ||
element instanceof PsiReferenceParameterList ||
element instanceof PsiTypeElement ||
element instanceof PsiLambdaExpression) {
return;
}
PsiClass targetClass = extractClass(element);
if (targetClass != null && targetClass.isInheritor(baseClass, true) && !hasSingleInitializationPlace(targetClass)) {
@@ -7,6 +7,7 @@ class Super {
static Super USED_PRIVATE = new <warning descr="Referencing subclass MyUsedSub from superclass Super initializer might lead to class loading deadlock">MyUsedSub</warning>();
static Object OK_INSIDE_ANONYMOUS = new Object() {{ Sub s = new Sub(); }};
static Runnable OK_INSIDE_LAMBDA = () -> { Sub s = new Sub(); };
static Object OK_UNRELATED = "abc";
static Super OK_SAME = new Super();
static Super OK_SAME_ANONYMOUS = new Super(){};