diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/DataFlowInspectionBase.java b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/DataFlowInspectionBase.java index cc54027315a0..6db91af441a6 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/DataFlowInspectionBase.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/DataFlowInspectionBase.java @@ -835,8 +835,8 @@ public class DataFlowInspectionBase extends BaseJavaBatchLocalInspectionTool { private static boolean isConstantOfType(PsiElement element, PsiPrimitiveType... types) { PsiElement resolved = element instanceof PsiReferenceExpression ? ((PsiReferenceExpression)element).resolve() : null; if (!(resolved instanceof PsiField)) return false; - PsiField field = (PsiField)resolved; - return field.hasModifierProperty(PsiModifier.FINAL) && field.hasModifierProperty(PsiModifier.STATIC) && + PsiVariable field = (PsiVariable)resolved; + return field.hasModifierProperty(PsiModifier.STATIC) && PsiUtil.isCompileTimeConstant(field) && ArrayUtil.contains(field.getType(), types); } diff --git a/java/java-tests/testData/inspection/dataFlow/fixture/SuppressStaticFlags.java b/java/java-tests/testData/inspection/dataFlow/fixture/SuppressStaticFlags.java index 6dd1af778cb2..f7c081944d16 100644 --- a/java/java-tests/testData/inspection/dataFlow/fixture/SuppressStaticFlags.java +++ b/java/java-tests/testData/inspection/dataFlow/fixture/SuppressStaticFlags.java @@ -51,4 +51,19 @@ public class SuppressStaticFlags { System.out.println("Literals"); } } + + + + public static final boolean nonCompileTimeConstant = new java.util.Random().nextBoolean(); + + public void hello1(Object file) { + if (file == null) { + return; + } + if (file == null && nonCompileTimeConstant) { + return; + } + System.out.println("hello"); + } + } \ No newline at end of file