From 03ddb122a87bbcbcbda7133e123912d66894a7ba Mon Sep 17 00:00:00 2001 From: peter Date: Fri, 7 Jul 2017 16:35:03 +0200 Subject: [PATCH] IDEA-175510 "Constant conditions & exceptions" inspection provides non-sensical quick fix in some cases --- .../codeInspection/dataFlow/DataFlowInspectionBase.java | 1 + .../dataFlow/fixture/NoNonSensicalFixesOnCastedNull.java | 9 +++++++++ .../java/codeInspection/DataFlowInspectionTest.java | 6 ++++++ 3 files changed, 16 insertions(+) create mode 100644 java/java-tests/testData/inspection/dataFlow/fixture/NoNonSensicalFixesOnCastedNull.java diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/DataFlowInspectionBase.java b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/DataFlowInspectionBase.java index a4e0b06f3835..6085b71d1ea6 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/DataFlowInspectionBase.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/DataFlowInspectionBase.java @@ -293,6 +293,7 @@ public class DataFlowInspectionBase extends BaseJavaBatchLocalInspectionTool { } private static boolean isNullLiteral(PsiExpression qualifier) { + if (qualifier instanceof PsiTypeCastExpression) return isNullLiteral(((PsiTypeCastExpression)qualifier).getOperand()); return qualifier instanceof PsiLiteralExpression && ((PsiLiteralExpression)qualifier).getValue() == null; } diff --git a/java/java-tests/testData/inspection/dataFlow/fixture/NoNonSensicalFixesOnCastedNull.java b/java/java-tests/testData/inspection/dataFlow/fixture/NoNonSensicalFixesOnCastedNull.java new file mode 100644 index 000000000000..a2ce8e2e63f2 --- /dev/null +++ b/java/java-tests/testData/inspection/dataFlow/fixture/NoNonSensicalFixesOnCastedNull.java @@ -0,0 +1,9 @@ +import org.jetbrains.annotations.NotNull; + +class Foo { + void main() { + foo((String) null); + } + + static void foo(@NotNull String s) {} +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/codeInspection/DataFlowInspectionTest.java b/java/java-tests/testSrc/com/intellij/java/codeInspection/DataFlowInspectionTest.java index 062f0c1a91aa..64873f523f91 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInspection/DataFlowInspectionTest.java +++ b/java/java-tests/testSrc/com/intellij/java/codeInspection/DataFlowInspectionTest.java @@ -23,6 +23,7 @@ import com.intellij.psi.PsiField; import com.intellij.testFramework.LightProjectDescriptor; import com.intellij.testFramework.PlatformTestUtil; import com.intellij.testFramework.fixtures.JavaCodeInsightTestFixture; +import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NotNull; /** @@ -524,4 +525,9 @@ public class DataFlowInspectionTest extends DataFlowInspectionTestCase { doTest(); } + public void testNoNonSensicalFixesOnCastedNull() { + doTest(); + assertEmpty(ContainerUtil.findAll(myFixture.getAvailableIntentions(), i -> i.getText().contains("null"))); + } + }