mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-223549 "Constant conditions & exceptions" should handle Objects.requireNonNullElse
GitOrigin-RevId: c73699d42137d7eafdfba49ed415065f312faabf
This commit is contained in:
committed by
intellij-monorepo-bot
parent
9c01012c08
commit
272518b1bd
+11
-1
@@ -154,7 +154,17 @@ public class HardcodedContracts {
|
||||
StandardMethodContract.fromText("null,!null->false"),
|
||||
StandardMethodContract.fromText("!null,null->false")
|
||||
))
|
||||
.register(enumValues(), ContractProvider.of(StandardMethodContract.fromText("->new")));
|
||||
.register(enumValues(), ContractProvider.of(StandardMethodContract.fromText("->new")))
|
||||
// Convert the following to external annotation once we support Java 9+ external annotations (IDEA-198249)
|
||||
.register(staticCall(JAVA_UTIL_OBJECTS, "requireNonNullElse").parameterCount(2),
|
||||
ContractProvider.of(
|
||||
StandardMethodContract.fromText("!null,_->param1"),
|
||||
StandardMethodContract.fromText("null,!null->param2"),
|
||||
StandardMethodContract.fromText("null,null->fail")))
|
||||
.register(staticCall(JAVA_UTIL_OBJECTS, "requireNonNullElseGet").parameterCount(2),
|
||||
ContractProvider.of(
|
||||
StandardMethodContract.fromText("!null,_->param1"),
|
||||
StandardMethodContract.fromText("null,_->!null")));
|
||||
|
||||
public static List<MethodContract> getHardcodedContracts(@NotNull PsiMethod method, @Nullable PsiMethodCallExpression call) {
|
||||
PsiClass owner = method.getContainingClass();
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
import java.util.*;
|
||||
import org.jetbrains.annotations.*;
|
||||
|
||||
public class ObjectsRequireNonNullElse {
|
||||
public int requireNonNullElse(@Nullable String str) {
|
||||
str = Objects.requireNonNullElse(str, "");
|
||||
if (<warning descr="Condition 'str == null' is always 'false'">str == null</warning>) {}
|
||||
return str.length();
|
||||
}
|
||||
|
||||
void test2(String s) {
|
||||
String s1 = Objects.requireNonNullElse(s, "");
|
||||
if (!s1.equals(s)) {
|
||||
if (<warning descr="Condition '!s1.isEmpty()' is always 'false'">!<warning descr="Result of 's1.isEmpty()' is always 'true'">s1.isEmpty()</warning></warning>) {}
|
||||
}
|
||||
}
|
||||
|
||||
void test3(@Nullable String s) {
|
||||
String s2 = Objects.requireNonNullElseGet(s, () -> "");
|
||||
if (<warning descr="Condition 's2 == null' is always 'false'">s2 == null</warning>) {}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -20,4 +20,5 @@ public class DataFlowInspection9Test extends DataFlowInspectionTestCase {
|
||||
public void testNullabilityJdk9() { doTest();}
|
||||
public void testMutabilityJdk9() { doTest();}
|
||||
public void testMutabilityInferred() { doTest(); }
|
||||
public void testObjectsRequireNonNullElse() { doTest(); }
|
||||
}
|
||||
Reference in New Issue
Block a user