diff --git a/java/java-impl-inspections/src/com/intellij/codeInspection/PatternVariableCanBeUsedInspection.java b/java/java-impl-inspections/src/com/intellij/codeInspection/PatternVariableCanBeUsedInspection.java index f98f4ad7484c..c1b1f0b70910 100644 --- a/java/java-impl-inspections/src/com/intellij/codeInspection/PatternVariableCanBeUsedInspection.java +++ b/java/java-impl-inspections/src/com/intellij/codeInspection/PatternVariableCanBeUsedInspection.java @@ -307,7 +307,7 @@ public final class PatternVariableCanBeUsedInspection extends AbstractBaseJavaLo if (instanceOfType != null && instanceOfType.getType() instanceof PsiClassType classType && !classType.isRaw()) { typeElement = instanceOfType; } - PsiIfStatement psiIfStatement = PsiTreeUtil.getParentOfType(instanceOf, PsiIfStatement.class); + PsiStatement psiIfStatement = PsiTreeUtil.getParentOfType(instanceOf, PsiStatement.class); if (psiIfStatement == null || psiIfStatement.getParent() == null) return; var visitor = new JavaRecursiveElementVisitor() { final List myCasts = new ArrayList<>(); diff --git a/java/java-tests/testData/inspection/patternVariableCanBeUsed/afterReplaceAfterIf.java b/java/java-tests/testData/inspection/patternVariableCanBeUsed/afterReplaceAfterIf.java new file mode 100644 index 000000000000..54551c97e793 --- /dev/null +++ b/java/java-tests/testData/inspection/patternVariableCanBeUsed/afterReplaceAfterIf.java @@ -0,0 +1,16 @@ +// "Replace cast expressions with pattern variable" "true" +public final class A { + private static boolean foo3(Number o, Number n) { + if (!(o instanceof Integer integer)) { + return false; + } + + if (integer.describeConstable().get() == 1) { + return true; + } + if (integer.describeConstable().get() == 2) { + return true; + } + return false; + } +} \ No newline at end of file diff --git a/java/java-tests/testData/inspection/patternVariableCanBeUsed/afterReplaceAfterIfAndElse.java b/java/java-tests/testData/inspection/patternVariableCanBeUsed/afterReplaceAfterIfAndElse.java new file mode 100644 index 000000000000..fe90085e9c6d --- /dev/null +++ b/java/java-tests/testData/inspection/patternVariableCanBeUsed/afterReplaceAfterIfAndElse.java @@ -0,0 +1,24 @@ +// "Replace cast expressions with pattern variable" "true" +public final class A { + private static Object foo5(Object o) { + return new Runnable() { + @Override + public void run() { + if (!(o instanceof Integer integer)) { + return; + } + final String string = integer.toString(); + if (string.equals("1")) { + return; + } + if (integer.intValue() == 1) { + return; + } + + print(integer); + } + }; + } + + +} \ No newline at end of file diff --git a/java/java-tests/testData/inspection/patternVariableCanBeUsed/afterReplaceAfterIfAndElseIf.java b/java/java-tests/testData/inspection/patternVariableCanBeUsed/afterReplaceAfterIfAndElseIf.java new file mode 100644 index 000000000000..734195aa67fd --- /dev/null +++ b/java/java-tests/testData/inspection/patternVariableCanBeUsed/afterReplaceAfterIfAndElseIf.java @@ -0,0 +1,17 @@ +// "Replace cast expressions with pattern variable" "true" +public final class A { + private static boolean foo4(Number o, Number n) { + if (!(o instanceof Integer integer)) { + return false; + } else if (integer.describeConstable().get() == 1) { + return true; + } + + if (integer.describeConstable().get() == 2) { + return true; + } + + return integer.describeConstable().get() == 3; + } + +} \ No newline at end of file diff --git a/java/java-tests/testData/inspection/patternVariableCanBeUsed/afterReplaceInLogicExpression.java b/java/java-tests/testData/inspection/patternVariableCanBeUsed/afterReplaceInLogicExpression.java new file mode 100644 index 000000000000..e9cc96b041a4 --- /dev/null +++ b/java/java-tests/testData/inspection/patternVariableCanBeUsed/afterReplaceInLogicExpression.java @@ -0,0 +1,6 @@ +// "Replace cast expressions with pattern variable" "true" +public final class A { + private static boolean foo2(Number o, Number n) { + return o instanceof Integer integer && o != n && integer.describeConstable().get() == 1; + } +} \ No newline at end of file diff --git a/java/java-tests/testData/inspection/patternVariableCanBeUsed/afterReplaceInverseAfterIf.java b/java/java-tests/testData/inspection/patternVariableCanBeUsed/afterReplaceInverseAfterIf.java new file mode 100644 index 000000000000..734195aa67fd --- /dev/null +++ b/java/java-tests/testData/inspection/patternVariableCanBeUsed/afterReplaceInverseAfterIf.java @@ -0,0 +1,17 @@ +// "Replace cast expressions with pattern variable" "true" +public final class A { + private static boolean foo4(Number o, Number n) { + if (!(o instanceof Integer integer)) { + return false; + } else if (integer.describeConstable().get() == 1) { + return true; + } + + if (integer.describeConstable().get() == 2) { + return true; + } + + return integer.describeConstable().get() == 3; + } + +} \ No newline at end of file diff --git a/java/java-tests/testData/inspection/patternVariableCanBeUsed/afterReplaceTernary.java b/java/java-tests/testData/inspection/patternVariableCanBeUsed/afterReplaceTernary.java new file mode 100644 index 000000000000..0a8a1b5e273b --- /dev/null +++ b/java/java-tests/testData/inspection/patternVariableCanBeUsed/afterReplaceTernary.java @@ -0,0 +1,6 @@ +// "Replace cast expressions with pattern variable" "true" +public final class A { + private static void foo(Object o) { + int x = o instanceof String string ? string.length() : 0; + } +} \ No newline at end of file diff --git a/java/java-tests/testData/inspection/patternVariableCanBeUsed/beforeReplaceAfterIf.java b/java/java-tests/testData/inspection/patternVariableCanBeUsed/beforeReplaceAfterIf.java new file mode 100644 index 000000000000..fe1a6e5c0cb7 --- /dev/null +++ b/java/java-tests/testData/inspection/patternVariableCanBeUsed/beforeReplaceAfterIf.java @@ -0,0 +1,16 @@ +// "Replace cast expressions with pattern variable" "true" +public final class A { + private static boolean foo3(Number o, Number n) { + if (!(o instanceof Integer)) { + return false; + } + + if (((Integer) o).describeConstable().get() == 1) { + return true; + } + if (((Integer) o).describeConstable().get() == 2) { + return true; + } + return false; + } +} \ No newline at end of file diff --git a/java/java-tests/testData/inspection/patternVariableCanBeUsed/beforeReplaceAfterIfAndElse.java b/java/java-tests/testData/inspection/patternVariableCanBeUsed/beforeReplaceAfterIfAndElse.java new file mode 100644 index 000000000000..cbfb17eeb54c --- /dev/null +++ b/java/java-tests/testData/inspection/patternVariableCanBeUsed/beforeReplaceAfterIfAndElse.java @@ -0,0 +1,24 @@ +// "Replace cast expressions with pattern variable" "true" +public final class A { + private static Object foo5(Object o) { + return new Runnable() { + @Override + public void run() { + if (!(o instanceof Integer)) { + return; + } + final String string = ((Integer) o).toString(); + if (string.equals("1")) { + return; + } + if (((Integer) o).intValue() == 1) { + return; + } + + print(((Integer) o)); + } + }; + } + + +} \ No newline at end of file diff --git a/java/java-tests/testData/inspection/patternVariableCanBeUsed/beforeReplaceAfterIfAndElseIf.java b/java/java-tests/testData/inspection/patternVariableCanBeUsed/beforeReplaceAfterIfAndElseIf.java new file mode 100644 index 000000000000..3e8a8ba0b5a6 --- /dev/null +++ b/java/java-tests/testData/inspection/patternVariableCanBeUsed/beforeReplaceAfterIfAndElseIf.java @@ -0,0 +1,17 @@ +// "Replace cast expressions with pattern variable" "true" +public final class A { + private static boolean foo4(Number o, Number n) { + if (!(o instanceof Integer)) { + return false; + } else if (((Integer) o).describeConstable().get() == 1) { + return true; + } + + if (((Integer) o).describeConstable().get() == 2) { + return true; + } + + return ((Integer) o).describeConstable().get() == 3; + } + +} \ No newline at end of file diff --git a/java/java-tests/testData/inspection/patternVariableCanBeUsed/beforeReplaceInLogicExpression.java b/java/java-tests/testData/inspection/patternVariableCanBeUsed/beforeReplaceInLogicExpression.java new file mode 100644 index 000000000000..e028b97c30ed --- /dev/null +++ b/java/java-tests/testData/inspection/patternVariableCanBeUsed/beforeReplaceInLogicExpression.java @@ -0,0 +1,6 @@ +// "Replace cast expressions with pattern variable" "true" +public final class A { + private static boolean foo2(Number o, Number n) { + return o instanceof Integer && o != n && ((Integer) o).describeConstable().get() == 1; + } +} \ No newline at end of file diff --git a/java/java-tests/testData/inspection/patternVariableCanBeUsed/beforeReplaceInverseAfterIf.java b/java/java-tests/testData/inspection/patternVariableCanBeUsed/beforeReplaceInverseAfterIf.java new file mode 100644 index 000000000000..3e8a8ba0b5a6 --- /dev/null +++ b/java/java-tests/testData/inspection/patternVariableCanBeUsed/beforeReplaceInverseAfterIf.java @@ -0,0 +1,17 @@ +// "Replace cast expressions with pattern variable" "true" +public final class A { + private static boolean foo4(Number o, Number n) { + if (!(o instanceof Integer)) { + return false; + } else if (((Integer) o).describeConstable().get() == 1) { + return true; + } + + if (((Integer) o).describeConstable().get() == 2) { + return true; + } + + return ((Integer) o).describeConstable().get() == 3; + } + +} \ No newline at end of file diff --git a/java/java-tests/testData/inspection/patternVariableCanBeUsed/beforeReplaceTernary.java b/java/java-tests/testData/inspection/patternVariableCanBeUsed/beforeReplaceTernary.java new file mode 100644 index 000000000000..649a59b751f0 --- /dev/null +++ b/java/java-tests/testData/inspection/patternVariableCanBeUsed/beforeReplaceTernary.java @@ -0,0 +1,6 @@ +// "Replace cast expressions with pattern variable" "true" +public final class A { + private static void foo(Object o) { + int x = o instanceof String ? ((String)o).length() : 0; + } +} \ No newline at end of file