From 62936955985c7154e01ba0075c7f96e0d54b446f Mon Sep 17 00:00:00 2001 From: peter Date: Tue, 17 Nov 2015 16:38:23 +0100 Subject: [PATCH] dfa: don't store useless primitive != null facts --- .../intellij/codeInspection/dataFlow/DfaMemoryStateImpl.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/DfaMemoryStateImpl.java b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/DfaMemoryStateImpl.java index 1634815041ce..fe0a493aebdc 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/DfaMemoryStateImpl.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/DfaMemoryStateImpl.java @@ -848,6 +848,7 @@ public class DfaMemoryStateImpl implements DfaMemoryState { } else { // Not Equals if (c1Index.equals(c2Index) || areCompatibleConstants(c1Index, c2Index)) return false; + if (isNull(dfaLeft) && isPrimitive(dfaRight) || isNull(dfaRight) && isPrimitive(dfaLeft)) return true; makeClassesDistinct(c1Index, c2Index); myCachedDistinctClassPairs = null; myCachedHash = null; @@ -856,6 +857,10 @@ public class DfaMemoryStateImpl implements DfaMemoryState { return true; } + private static boolean isPrimitive(DfaValue value) { + return value instanceof DfaVariableValue && ((DfaVariableValue)value).getVariableType() instanceof PsiPrimitiveType; + } + private static boolean preserveConstantDistinction(final Object c1, final Object c2) { return c1 == null && c2 instanceof PsiEnumConstant || c2 == null && c1 instanceof PsiEnumConstant;