From a08d89082e53ffe19157d4fd60101c66021670a1 Mon Sep 17 00:00:00 2001 From: peter Date: Wed, 29 Jun 2016 16:35:03 +0200 Subject: [PATCH] don't report subclass references inside lambdas in StaticInitializerReferencesSubClassInspection --- .../StaticInitializerReferencesSubClassInspection.java | 7 ++++++- .../StaticInitializer.java | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/threading/StaticInitializerReferencesSubClassInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/threading/StaticInitializerReferencesSubClassInspection.java index d68ab88eb015..3bed6d7e97f3 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/threading/StaticInitializerReferencesSubClassInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/threading/StaticInitializerReferencesSubClassInspection.java @@ -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)) { diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/threading/StaticInitializerReferencesSubClass/StaticInitializer.java b/plugins/InspectionGadgets/test/com/siyeh/igtest/threading/StaticInitializerReferencesSubClass/StaticInitializer.java index f5cc496d9d95..e7050f5444e5 100644 --- a/plugins/InspectionGadgets/test/com/siyeh/igtest/threading/StaticInitializerReferencesSubClass/StaticInitializer.java +++ b/plugins/InspectionGadgets/test/com/siyeh/igtest/threading/StaticInitializerReferencesSubClass/StaticInitializer.java @@ -7,6 +7,7 @@ class Super { static Super USED_PRIVATE = new MyUsedSub(); 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(){};