From b007ebf8652b447d247e3c886623984e75994e42 Mon Sep 17 00:00:00 2001 From: Tagir Valeev Date: Thu, 13 Feb 2025 09:20:19 +0100 Subject: [PATCH] [java-annotations] getOrDefault 2nd parameter is marked as nullable Fixes IDEA-367387 Mismatch between IDEA and JSpecify on HashMap.getDefault(...) nullness GitOrigin-RevId: 6e90dcdac5b61aa91431f96d007261ad448ea522 --- .../dataFlow/fixture/JSpecifyGetOrDefault.java | 13 +++++++++++++ .../codeInspection/DataFlowInspection21Test.java | 6 ++++++ java/jdkAnnotations/java/util/annotations.xml | 3 +++ 3 files changed, 22 insertions(+) create mode 100644 java/java-tests/testData/inspection/dataFlow/fixture/JSpecifyGetOrDefault.java diff --git a/java/java-tests/testData/inspection/dataFlow/fixture/JSpecifyGetOrDefault.java b/java/java-tests/testData/inspection/dataFlow/fixture/JSpecifyGetOrDefault.java new file mode 100644 index 000000000000..64fc3315b119 --- /dev/null +++ b/java/java-tests/testData/inspection/dataFlow/fixture/JSpecifyGetOrDefault.java @@ -0,0 +1,13 @@ +import org.jspecify.annotations.NullMarked; +import org.jspecify.annotations.Nullable; + +import java.util.HashMap; + +@NullMarked +class Main { + HashMap map = new HashMap<>(); + + public @Nullable String example() { + return map.getOrDefault("key", null); + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/codeInspection/DataFlowInspection21Test.java b/java/java-tests/testSrc/com/intellij/java/codeInspection/DataFlowInspection21Test.java index e7c5c1a9ad83..7c2dc9b8d084 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInspection/DataFlowInspection21Test.java +++ b/java/java-tests/testSrc/com/intellij/java/codeInspection/DataFlowInspection21Test.java @@ -160,4 +160,10 @@ public class DataFlowInspection21Test extends DataFlowInspectionTestCase { setupTypeUseAnnotations("org.jspecify.annotations", myFixture); doTest(); } + + public void testJSpecifyGetOrDefault() { + addJSpecifyNullMarked(myFixture); + setupTypeUseAnnotations("org.jspecify.annotations", myFixture); + doTest(); + } } \ No newline at end of file diff --git a/java/jdkAnnotations/java/util/annotations.xml b/java/jdkAnnotations/java/util/annotations.xml index a13f0dc2687b..1c08d22da70b 100644 --- a/java/jdkAnnotations/java/util/annotations.xml +++ b/java/jdkAnnotations/java/util/annotations.xml @@ -3216,6 +3216,9 @@ + + +