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 a2caee180af3..f8e45cea0a42 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
@@ -1124,15 +1124,12 @@ public class DfaMemoryStateImpl implements DfaMemoryState {
DfaPsiType dfaType = myFactory.createDfaType(value);
TypeConstraint constraint = TypeConstraint.exact(dfaType);
PsiClass psiClass = PsiUtil.resolveClassInClassTypeOnly(value);
- if (!negated) {
- if (psiClass != null && (psiClass.isInterface() || psiClass.hasModifierProperty(PsiModifier.ABSTRACT))) {
- // getClass() result cannot be an interface or an abstract class
- return ThreeState.NO;
- }
- return ThreeState.fromBoolean(applyFact(qualifier, DfaFactType.TYPE_CONSTRAINT, constraint));
- }
if (psiClass != null && (psiClass.isInterface() || psiClass.hasModifierProperty(PsiModifier.ABSTRACT))) {
- return ThreeState.YES;
+ // getClass() result cannot be an interface or an abstract class
+ return ThreeState.fromBoolean(negated);
+ }
+ if (!negated) {
+ return ThreeState.fromBoolean(applyFact(qualifier, DfaFactType.TYPE_CONSTRAINT, constraint));
}
TypeConstraint existingConstraint = getValueFact(qualifier, DfaFactType.TYPE_CONSTRAINT);
if (existingConstraint != null && existingConstraint.isExact()) {
diff --git a/java/java-tests/testData/inspection/dataFlow/fixture/GetClass.java b/java/java-tests/testData/inspection/dataFlow/fixture/GetClass.java
index 6753139d595b..c0e8aabf3fa8 100644
--- a/java/java-tests/testData/inspection/dataFlow/fixture/GetClass.java
+++ b/java/java-tests/testData/inspection/dataFlow/fixture/GetClass.java
@@ -20,6 +20,11 @@ class GetClass {
}
+ void testNew() {
+ Object x = new HashSet();
+ if (x.getClass() == HashSet.class) {}
+ }
+
void testInstanceOfInterop(Object obj) {
if (obj instanceof CharSequence) {
if (obj.getClass() == Integer.class) {}