From 340a56e8affc0e15a669ed59efdcc25fc9d0b7dd Mon Sep 17 00:00:00 2001 From: Tagir Valeev Date: Fri, 22 Apr 2022 11:25:15 +0200 Subject: [PATCH] [java-dfa] Optional.orElse parameter is nullable (IDEA-291604) GitOrigin-RevId: 1f352520c9e231004f06b6724bba2e00d5377ff4 --- .../fixture/EclipseDefaultOptionalOrElse.java | 12 ++++++++++++ .../java/codeInspection/DataFlowInspection8Test.java | 6 ++++++ java/jdkAnnotations/java/util/annotations.xml | 1 + 3 files changed, 19 insertions(+) create mode 100644 java/java-tests/testData/inspection/dataFlow/fixture/EclipseDefaultOptionalOrElse.java diff --git a/java/java-tests/testData/inspection/dataFlow/fixture/EclipseDefaultOptionalOrElse.java b/java/java-tests/testData/inspection/dataFlow/fixture/EclipseDefaultOptionalOrElse.java new file mode 100644 index 000000000000..70a8b8cbe87f --- /dev/null +++ b/java/java-tests/testData/inspection/dataFlow/fixture/EclipseDefaultOptionalOrElse.java @@ -0,0 +1,12 @@ +import java.util.Optional; + +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; + +// IDEA-291604 +@NonNullByDefault +class Test { + public @Nullable String test(final Optional optional, final @Nullable String fallback) { + return optional.orElse(fallback); + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/codeInspection/DataFlowInspection8Test.java b/java/java-tests/testSrc/com/intellij/java/codeInspection/DataFlowInspection8Test.java index 38c069c9b4f9..ddc12a9e9dcb 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInspection/DataFlowInspection8Test.java +++ b/java/java-tests/testSrc/com/intellij/java/codeInspection/DataFlowInspection8Test.java @@ -308,6 +308,12 @@ public class DataFlowInspection8Test extends DataFlowInspectionTestCase { myFixture.addClass("package org.eclipse.jdt.annotation;public @interface NonNullByDefault {}"); doTest(); } + public void testEclipseDefaultOptionalOrElse() { + myFixture.addClass("package org.eclipse.jdt.annotation;public @interface NonNullByDefault {}"); + myFixture.addClass("package org.eclipse.jdt.annotation;import java.lang.annotation.*;" + + "@Target({ElementType.TYPE_USE}) public @interface Nullable {}"); + doTest(); + } public void testClassInsideLambda() { doTest(); } public void testMultiDimensionalArrays() { setupTypeUseAnnotations("typeUse", myFixture); diff --git a/java/jdkAnnotations/java/util/annotations.xml b/java/jdkAnnotations/java/util/annotations.xml index 04d2fe86fbb8..f2a1a11e38a8 100644 --- a/java/jdkAnnotations/java/util/annotations.xml +++ b/java/jdkAnnotations/java/util/annotations.xml @@ -3429,6 +3429,7 @@ +