IDEA-165108 Objects.requireNonNull with argument of primitive type should be reported as warning

This commit is contained in:
Tagir Valeev
2017-05-15 13:08:30 +07:00
parent 58de421e8a
commit b3339b7cfd
13 changed files with 323 additions and 2 deletions
@@ -0,0 +1,29 @@
import org.jetbrains.annotations.*;
import java.util.*;
abstract class ObviousNullCheck {
abstract String getFoo();
abstract String getBar();
void test() {
assertNotNull(<warning descr="Useless null-check: a value of primitive type is never null">5 + 6</warning>);
Objects.requireNonNull(<warning descr="Useless null-check: literal is never null">"xyz"</warning>, "xyz");
Objects.requireNonNull((<warning descr="Useless null-check: concatenation is never null">getFoo() + getBar()</warning>));
Objects.requireNonNull(<warning descr="Useless null-check: newly created object is never null">new ArrayList()</warning>, () -> "new returned null");
String s = Objects.requireNonNull(<warning descr="Useless null-check: literal is never null">" x "</warning>);
String s1 = trim(" x ");
}
@Contract(value="null -> fail", pure=true)
String trim(String s) {
return s.trim();
}
@Contract(value="null -> fail", pure=true)
static void assertNotNull(Object obj) {
if(obj == null) throw new NullPointerException();
}
}
@@ -0,0 +1,7 @@
// "Remove useless null-check" "true"
import java.util.*;
public class Test {
public void test() {
}
}
@@ -0,0 +1,10 @@
// "Remove useless null-check" "true"
import java.util.*;
public class Test {
Test(int x) {}
public void test() {
String s = new Test(1)+":"+new Test(2)+":"+new Test(3+new Test(4).hashCode());
}
}
@@ -0,0 +1,12 @@
// "Remove useless null-check" "true"
import java.util.*;
public class Test {
Test(int x) {}
public void test() {
new Test(1);
new Test(2);
new Test(3 + new Test(4).hashCode());
}
}
@@ -0,0 +1,8 @@
// "Remove useless null-check" "true"
import java.util.*;
public class Test {
public void test() {
Objects.requireNonNull(5<caret>5);
}
}
@@ -0,0 +1,10 @@
// "Remove useless null-check" "true"
import java.util.*;
public class Test {
Test(int x) {}
public void test() {
String s = Objects.requireNonNull(new <caret>Test(1)+":"+new Test(2)+":"+new Test(3+new Test(4).hashCode()));
}
}
@@ -0,0 +1,10 @@
// "Remove useless null-check" "true"
import java.util.*;
public class Test {
Test(int x) {}
public void test() {
Objects.requireNonNull(new <caret>Test(1)+":"+new Test(2)+":"+new Test(3+new Test(4).hashCode()));
}
}