dfa: use cached nullability

This commit is contained in:
peter
2013-09-19 11:17:21 +02:00
parent b81e9c35ec
commit 4c7154dfa4
@@ -115,13 +115,11 @@ public class StandardInstructionVisitor extends InstructionVisitor {
if (dfaDest instanceof DfaVariableValue) {
DfaVariableValue var = (DfaVariableValue) dfaDest;
final PsiModifierListOwner psiVariable = var.getPsiVariable();
if (DfaPsiUtil.getElementNullability(var.getVariableType(), psiVariable) == Nullness.NOT_NULL) {
if (!memState.checkNotNullable(dfaSource)) {
onAssigningToNotNullableVariable(instruction);
}
if (var.getInherentNullability() == Nullness.NOT_NULL && !memState.checkNotNullable(dfaSource)) {
onAssigningToNotNullableVariable(instruction);
}
if (!(psiVariable instanceof PsiField) || !psiVariable.hasModifierProperty(PsiModifier.VOLATILE)) {
final PsiModifierListOwner psi = var.getPsiVariable();
if (!(psi instanceof PsiField) || !psi.hasModifierProperty(PsiModifier.VOLATILE)) {
memState.setVarValue(var, dfaSource);
}
} else if (dfaDest instanceof DfaTypeValue && ((DfaTypeValue)dfaDest).isNotNull() && !memState.checkNotNullable(dfaSource)) {