From f1028073cb873951fbd98843d52222255b8facaa Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Tue, 26 Sep 2017 16:09:04 +0200 Subject: [PATCH] enable common dataflow for class initializers --- .../codeInspection/dataFlow/CommonDataflow.java | 5 +++-- .../SimplifiableEqualsExpression.java | 10 ++++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/CommonDataflow.java b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/CommonDataflow.java index ccee47604b6c..6236ddba1c6a 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/CommonDataflow.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/CommonDataflow.java @@ -88,9 +88,10 @@ public class CommonDataflow { private static DataflowResult getDataflowResult(PsiElement context) { PsiMember member = PsiTreeUtil.getParentOfType(context, PsiMember.class); - if(!(member instanceof PsiMethod)) return null; + if(!(member instanceof PsiMethod) && !(member instanceof PsiClassInitializer)) return null; return CachedValuesManager.getCachedValue(member, () -> { - PsiCodeBlock body = ((PsiMethod)member).getBody(); + PsiCodeBlock body = member instanceof PsiMethod ? ((PsiMethod)member).getBody() + : ((PsiClassInitializer)member).getBody(); DataflowResult result = runDFA(body); return CachedValueProvider.Result.create(result, PsiModificationTracker.MODIFICATION_COUNT); }); diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/controlflow/simplifiable_equals_expression/SimplifiableEqualsExpression.java b/plugins/InspectionGadgets/test/com/siyeh/igtest/controlflow/simplifiable_equals_expression/SimplifiableEqualsExpression.java index d66fa185b565..9c538752701c 100644 --- a/plugins/InspectionGadgets/test/com/siyeh/igtest/controlflow/simplifiable_equals_expression/SimplifiableEqualsExpression.java +++ b/plugins/InspectionGadgets/test/com/siyeh/igtest/controlflow/simplifiable_equals_expression/SimplifiableEqualsExpression.java @@ -50,6 +50,16 @@ public class SimplifiableEqualsExpression { System.out.println("..."); } } + + private static final boolean DEBUG = false; + + { + String s1 = DEBUG ? "null" : null; + + if(s1 == null || !s1.equals("")) { + System.out.println("..."); + } + } void test(List list) { String s = list.get(0);