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 1ec6a26d440f..45872bc61614 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; @@ -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())); diff --git a/java/java-tests/testData/inspection/dataFlow/fixture/ForeachOverWildcards.java b/java/java-tests/testData/inspection/dataFlow/fixture/ForeachOverWildcards.java new file mode 100644 index 000000000000..152c9eae2e30 --- /dev/null +++ b/java/java-tests/testData/inspection/dataFlow/fixture/ForeachOverWildcards.java @@ -0,0 +1,12 @@ +import org.jetbrains.annotations.Nullable; + +class Some { + void bar2(@Nullable Iterable dirs) { + if (dirs != null) { + for (String dir : dirs) { + + } + } + } + +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/codeInspection/DataFlowInspectionTest.java b/java/java-tests/testSrc/com/intellij/codeInspection/DataFlowInspectionTest.java index 108e2b2e7953..7b40b333a969 100644 --- a/java/java-tests/testSrc/com/intellij/codeInspection/DataFlowInspectionTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInspection/DataFlowInspectionTest.java @@ -296,6 +296,7 @@ public class DataFlowInspectionTest extends LightCodeInsightFixtureTestCase { public void testAnonymousMethodIndependence() { doTest(); } public void testAnonymousFieldIndependence() { doTest(); } public void testNoConfusionWithAnonymousConstantInitializer() { doTest(); } + public void testForeachOverWildcards() { doTest(); } public void _testNullCheckBeforeInstanceof() { doTest(); } }