From 1341348316afe22dc491bee8a5c2cc52a85cbe78 Mon Sep 17 00:00:00 2001 From: peter Date: Wed, 7 Nov 2012 20:43:16 +0100 Subject: [PATCH] test expectations for IDEA-92380 "Constant Conditions & Exceptions": relax possible NPE reporting for fields --- .../MutableNotAnnotatedFieldsTreatment.java | 68 ++++++++++++++++++ .../MutableNullableFieldsTreatment.java | 70 +++++++++++++++++++ .../DataFlowInspectionFixtureTest.java | 3 + 3 files changed, 141 insertions(+) create mode 100644 java/java-tests/testData/inspection/dataFlow/fixture/MutableNotAnnotatedFieldsTreatment.java create mode 100644 java/java-tests/testData/inspection/dataFlow/fixture/MutableNullableFieldsTreatment.java diff --git a/java/java-tests/testData/inspection/dataFlow/fixture/MutableNotAnnotatedFieldsTreatment.java b/java/java-tests/testData/inspection/dataFlow/fixture/MutableNotAnnotatedFieldsTreatment.java new file mode 100644 index 000000000000..a7c67e05861f --- /dev/null +++ b/java/java-tests/testData/inspection/dataFlow/fixture/MutableNotAnnotatedFieldsTreatment.java @@ -0,0 +1,68 @@ +import org.jetbrains.annotations.Nullable; + +class Foo { + Object data; + + void checkNotNullAndUse(Foo f) { + if (f.data != null) { + System.out.println(f.data.hashCode()); + } + } + + void checkNullAndReturn(Foo f) { + if (f.data == null) { + return; + } + System.out.println(f.data.hashCode()); + } + + void warnWhenWrongCheck() { + if (data != null) { + return; + } + System.out.println(data.hashCode()); + System.out.println(data.hashCode()); + } + + void dontWarnWhenNotChecked(Foo f) { + System.out.println(f.data.hashCode()); + } + + void dontWarnWhenNotCheckedThis() { + System.out.println(data.hashCode()); + } + + void dontWarnWhenDoubleChecked(Foo f) { + if (f.data == null) { + return; + } + if (f.data == null) { + return; + } + System.out.println(f.data.hashCode()); + } + + void dontWarnWhenDoubleChecked_This_Synchronized() { + if (data == null) { + return; + } + synchronized (this) { + if (data == null) { + return; + } + } + System.out.println(data.hashCode()); + } + + void dontWarnWhenDoubleChecked_This_WithMethodCall() { + if (data == null) { + return; + } + System.out.println(data.hashCode()); + if (data == null) { + return; + } + System.out.println(data.hashCode()); + } + +} \ No newline at end of file diff --git a/java/java-tests/testData/inspection/dataFlow/fixture/MutableNullableFieldsTreatment.java b/java/java-tests/testData/inspection/dataFlow/fixture/MutableNullableFieldsTreatment.java new file mode 100644 index 000000000000..ee2b1813b4d2 --- /dev/null +++ b/java/java-tests/testData/inspection/dataFlow/fixture/MutableNullableFieldsTreatment.java @@ -0,0 +1,70 @@ +import org.jetbrains.annotations.Nullable; + +class Foo { + @Nullable Object data; + + void checkNotNullAndUse(Foo f) { + if (f.data != null) { + System.out.println(f.data.hashCode()); + } + } + + void checkNullAndReturn(Foo f) { + if (f.data == null) { + return; + } + System.out.println(f.data.hashCode()); + } + + void warnWhenWrongCheck() { + if (data != null) { + return; + } + System.out.println(data.hashCode()); + System.out.println(data.hashCode()); + } + + void warnWhenNotCheckedOnce(Foo f) { + System.out.println(f.data.hashCode()); + System.out.println(f.data.hashCode()); + } + + void warnWhenNotCheckedThisOnce() { + System.out.println(data.hashCode()); + System.out.println(data.hashCode()); + } + + void dontWarnWhenDoubleChecked(Foo f) { + if (f.data == null) { + return; + } + if (f.data == null) { + return; + } + System.out.println(f.data.hashCode()); + } + + void dontWarnWhenDoubleChecked_This_Synchronized() { + if (data == null) { + return; + } + synchronized (this) { + if (data == null) { + return; + } + } + System.out.println(data.hashCode()); + } + + void dontWarnWhenDoubleChecked_This_WithMethodCall() { + if (data == null) { + return; + } + System.out.println(data.hashCode()); + if (data == null) { + return; + } + System.out.println(data.hashCode()); + } + +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/codeInspection/DataFlowInspectionFixtureTest.java b/java/java-tests/testSrc/com/intellij/codeInspection/DataFlowInspectionFixtureTest.java index ae2b0ca6b7db..b28e4316c746 100644 --- a/java/java-tests/testSrc/com/intellij/codeInspection/DataFlowInspectionFixtureTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInspection/DataFlowInspectionFixtureTest.java @@ -131,5 +131,8 @@ public class DataFlowInspectionFixtureTest extends JavaCodeInsightFixtureTestCas } public void testConstantDoubleComparisons() { doTest(); } + + public void _testMutableNullableFieldsTreatment() { doTest(); } + public void testMutableNotAnnotatedFieldsTreatment() { doTest(); } }