Do not assume that Object is assignable from any class

Class could be a primitive
Fixes IDEA-232014 False positive `Constant conditions & exceptions` inspection for `Class#isAssignableFrom(Class)`

GitOrigin-RevId: 4db7cfa10a0d2b8a2476f434db82d04d7a62cd38
This commit is contained in:
Tagir Valeev
2020-02-04 17:07:43 +07:00
committed by intellij-monorepo-bot
parent b91599f50f
commit 9be22ca7e7
2 changed files with 10 additions and 1 deletions

View File

@@ -939,7 +939,7 @@ public class StandardInstructionVisitor extends InstructionVisitor {
ArrayList<DfaInstructionState> states = new ArrayList<>(2);
DfType leftType = memState.getDfType(dfaLeft);
if (condition == DfaCondition.getUnknown()) {
if (dfaLeft instanceof DfaTypeValue && dfaRight instanceof DfaTypeValue) {
if (leftType != TOP && dfaLeft instanceof DfaTypeValue && dfaRight instanceof DfaTypeValue) {
TypeConstraint left = TypeConstraint.fromDfType(leftType);
TypeConstraint right = TypeConstraint.fromDfType(dfaRight.getDfType());
useful = !right.isSuperConstraintOf(left);