diff --git a/java/java-analysis-impl/src/com/siyeh/ig/psiutils/InstanceOfUtils.java b/java/java-analysis-impl/src/com/siyeh/ig/psiutils/InstanceOfUtils.java index b8f70e83269f..647d21e01206 100644 --- a/java/java-analysis-impl/src/com/siyeh/ig/psiutils/InstanceOfUtils.java +++ b/java/java-analysis-impl/src/com/siyeh/ig/psiutils/InstanceOfUtils.java @@ -360,12 +360,11 @@ public final class InstanceOfUtils { PsiType type = typeElement.getType(); PsiType castType = Objects.requireNonNull(cast.getCastType()).getType(); PsiExpression castOperand = Objects.requireNonNull(cast.getOperand()); - if (typeCompatible(type, castType, castOperand) && - PsiEquivalenceUtil.areElementsEquivalent(instanceOf.getOperand(), castOperand)) { - return instanceOf; - } - if (PsiUtil.isJvmLocalVariable(variable) && isSafeToNarrowType(variable, cast, type)) { - return instanceOf; + if (PsiEquivalenceUtil.areElementsEquivalent(instanceOf.getOperand(), castOperand)) { + if (typeCompatible(type, castType, castOperand) || + PsiUtil.isJvmLocalVariable(variable) && isSafeToNarrowType(variable, cast, type)) { + return instanceOf; + } } } } diff --git a/java/java-tests/testData/inspection/patternVariableCanBeUsed/beforeWrongVariable.java b/java/java-tests/testData/inspection/patternVariableCanBeUsed/beforeWrongVariable.java new file mode 100644 index 000000000000..6be55b3eb66b --- /dev/null +++ b/java/java-tests/testData/inspection/patternVariableCanBeUsed/beforeWrongVariable.java @@ -0,0 +1,10 @@ +// "Replace 'number' with pattern variable" "false" +class X { + public static void main(String[] args) { + Object o1 = 1.0; + Object o2 = 2; + if (!(o1 instanceof Double)) return; + Number number = (Number) o2; + System.out.println("number = " + number); + } +} \ No newline at end of file