summaryrefslogtreecommitdiff
path: root/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/value/DfaVariableValue.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/value/DfaVariableValue.java')
-rw-r--r--java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/value/DfaVariableValue.java21
1 files changed, 8 insertions, 13 deletions
diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/value/DfaVariableValue.java b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/value/DfaVariableValue.java
index e522b8fb2c6f..fa2217a2918b 100644
--- a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/value/DfaVariableValue.java
+++ b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/value/DfaVariableValue.java
@@ -30,6 +30,7 @@ import com.intellij.codeInspection.dataFlow.Nullness;
import com.intellij.openapi.util.Comparing;
import com.intellij.openapi.util.Trinity;
import com.intellij.psi.*;
+import com.intellij.psi.util.TypeConversionUtil;
import com.intellij.util.SmartList;
import com.intellij.util.containers.MultiMap;
import org.jetbrains.annotations.NotNull;
@@ -90,7 +91,7 @@ public class DfaVariableValue extends DfaValue {
myIsNegated = isNegated;
myQualifier = qualifier;
myVarType = varType;
- myTypeValue = varType == null ? null : myFactory.getTypeFactory().createTypeValue(varType, Nullness.UNKNOWN);
+ myTypeValue = varType == null ? null : (DfaTypeValue)myFactory.createTypeValue(varType, Nullness.UNKNOWN);
}
@Nullable
@@ -132,7 +133,7 @@ public class DfaVariableValue extends DfaValue {
private boolean hardEquals(PsiModifierListOwner psiVar, PsiType varType, boolean negated, DfaVariableValue qualifier) {
return psiVar == myVariable &&
- Comparing.equal(varType, myVarType) &&
+ Comparing.equal(TypeConversionUtil.erasure(varType), TypeConversionUtil.erasure(myVarType)) &&
negated == myIsNegated &&
(myQualifier == null ? qualifier == null : myQualifier.hardEquals(qualifier.getPsiVariable(), qualifier.getVariableType(),
qualifier.isNegated(), qualifier.getQualifier()));
@@ -143,10 +144,6 @@ public class DfaVariableValue extends DfaValue {
return myQualifier;
}
- public boolean isViaMethods() {
- return myVariable instanceof PsiMethod || myQualifier != null && myQualifier.isViaMethods();
- }
-
public Nullness getInherentNullability() {
if (myInherentNullability != null) {
return myInherentNullability;
@@ -190,14 +187,12 @@ public class DfaVariableValue extends DfaValue {
return Nullness.UNKNOWN;
}
- public boolean isLocalVariable() {
- return myVariable instanceof PsiLocalVariable || myVariable instanceof PsiParameter;
- }
-
public boolean isFlushableByCalls() {
- if (isLocalVariable()) return false;
- if (!myVariable.hasModifierProperty(PsiModifier.FINAL)) return true;
- return myQualifier != null && myQualifier.isFlushableByCalls();
+ if (myVariable instanceof PsiLocalVariable || myVariable instanceof PsiParameter) return false;
+ if (myVariable instanceof PsiVariable && myVariable.hasModifierProperty(PsiModifier.FINAL)) {
+ return myQualifier != null && myQualifier.isFlushableByCalls();
+ }
+ return true;
}
}