From 7389b1ded71cd1ea304536c2e58f4b8eca09ab95 Mon Sep 17 00:00:00 2001 From: Tagir Valeev Date: Tue, 4 Feb 2020 16:09:43 +0700 Subject: [PATCH] InstanceOfUtils#findInstanceOf: null-check GitOrigin-RevId: 3665bff967f078080d9da9edbdeb584f990acdc2 --- .../patternVariableCanBeUsed/beforeIncomplete.java | 8 ++++++++ .../src/com/siyeh/ig/psiutils/InstanceOfUtils.java | 7 ++++++- 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 java/java-tests/testData/inspection/patternVariableCanBeUsed/beforeIncomplete.java diff --git a/java/java-tests/testData/inspection/patternVariableCanBeUsed/beforeIncomplete.java b/java/java-tests/testData/inspection/patternVariableCanBeUsed/beforeIncomplete.java new file mode 100644 index 000000000000..7d4bb82b9223 --- /dev/null +++ b/java/java-tests/testData/inspection/patternVariableCanBeUsed/beforeIncomplete.java @@ -0,0 +1,8 @@ +// "Fix all 'Pattern variable can be used' problems in file" "false" +class X { + void test(Object obj) { + if() { + String s = (String) obj; + } + } +} \ No newline at end of file diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/InstanceOfUtils.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/InstanceOfUtils.java index ceea98230266..bc8d78db01bc 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/InstanceOfUtils.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/InstanceOfUtils.java @@ -27,6 +27,7 @@ import com.intellij.psi.util.PsiTreeUtil; import com.intellij.psi.util.PsiUtil; import com.intellij.util.ObjectUtils; import com.intellij.util.containers.ContainerUtil; +import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -278,7 +279,11 @@ public class InstanceOfUtils { return startOffset != -1 && endOffset != -1 && ControlFlowUtil.canCompleteNormally(flow, startOffset, endOffset); } - private static PsiInstanceOfExpression findInstanceOf(PsiExpression condition, PsiTypeCastExpression cast, boolean whenTrue) { + @Contract("null, _, _ -> null") + private static PsiInstanceOfExpression findInstanceOf(@Nullable PsiExpression condition, + @NotNull PsiTypeCastExpression cast, + boolean whenTrue) { + if (condition == null) return null; if (condition instanceof PsiParenthesizedExpression) { return findInstanceOf(((PsiParenthesizedExpression)condition).getExpression(), cast, whenTrue); }