mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-10 13:17:09 +07:00
Better methodref support in DFA; Stream.generate() inlining support
This commit is contained in:
@@ -153,8 +153,8 @@ public class LongRangeKnownMethods {
|
||||
|
||||
void testStringComparison(String name) {
|
||||
// Parentheses misplaced -- found in AndroidStudio
|
||||
if (!(name.equals("layout_width") && <warning descr="Condition '!(name.equals(\"layout_height\"))' is always 'true'">!(name.equals("layout_height"))</warning> &&
|
||||
<warning descr="Condition '!(name.equals(\"id\"))' is always 'true'">!(name.equals("id"))</warning>)) {
|
||||
if (!(name.equals("layout_width") && <warning descr="Condition '!(name.equals(\"layout_height\"))' is always 'true'">!(<warning descr="Condition 'name.equals(\"layout_height\")' is always 'false'">name.equals("layout_height")</warning>)</warning> &&
|
||||
<warning descr="Condition '!(name.equals(\"id\"))' is always 'true'">!(<warning descr="Condition 'name.equals(\"id\")' is always 'false'">name.equals("id")</warning>)</warning>)) {
|
||||
System.out.println("ok");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@ public class OptionalInlining {
|
||||
System.out.println("Always");
|
||||
}
|
||||
String s3 = Optional.of(Math.random() > 0.5 ? "foo" : "baz").orElse("bar");
|
||||
if (<warning descr="Condition 's3.equals(\"foo\") || s3.equals(\"baz\")' is always 'true'">s3.equals("foo") || s3.equals("baz")</warning>) {
|
||||
if (<warning descr="Condition 's3.equals(\"foo\") || s3.equals(\"baz\")' is always 'true'">s3.equals("foo") || <warning descr="Condition 's3.equals(\"baz\")' is always 'true' when reached">s3.equals("baz")</warning></warning>) {
|
||||
System.out.println("Always");
|
||||
}
|
||||
if (<warning descr="Condition 's3.equals(\"bar\")' is always 'false'">s3.equals("bar")</warning>) {
|
||||
@@ -111,7 +111,7 @@ public class OptionalInlining {
|
||||
void testMap(Optional<String> opt) {
|
||||
opt.map(<warning descr="Passing 'null' argument to parameter annotated as @NotNull">null</warning>);
|
||||
String res = opt.<String>map(s -> null).orElse("abc");
|
||||
if (<warning descr="Condition '!res.equals(\"abc\")' is always 'false'">!res.equals("abc")</warning>) {
|
||||
if (<warning descr="Condition '!res.equals(\"abc\")' is always 'false'">!<warning descr="Condition 'res.equals(\"abc\")' is always 'true'">res.equals("abc")</warning></warning>) {
|
||||
System.out.println("Never");
|
||||
}
|
||||
String trimmed = Optional.ofNullable(nullableMethod()).map(xx -> xx.trim()).orElse("");
|
||||
|
||||
@@ -2,8 +2,7 @@ import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.IntStream;
|
||||
import java.util.stream.Stream;
|
||||
import java.util.stream.*;
|
||||
|
||||
public class StreamInlining {
|
||||
void testNulls(List<String> list) {
|
||||
@@ -26,6 +25,7 @@ public class StreamInlining {
|
||||
if(list.stream().filter(Objects::nonNull).anyMatch(x -> <warning descr="Condition 'x == null' is always 'false'">x == null</warning>)) {
|
||||
System.out.println("never");
|
||||
}
|
||||
list.stream().map(Integer::valueOf).filter(<warning descr="Method reference result is always 'true'">Objects::nonNull</warning>).forEach(System.out::println);
|
||||
}
|
||||
|
||||
void filterDistinctLimitSkipFilter(List<String> list) {
|
||||
@@ -118,4 +118,12 @@ public class StreamInlining {
|
||||
Optional<String> testOptionalOfNullable(List<String> list) {
|
||||
return list.stream().filter(Objects::isNull).map(Optional::<warning descr="Passing 'null' argument to 'Optional'">ofNullable</warning>).findFirst().orElse(Optional.empty());
|
||||
}
|
||||
|
||||
void testGenerate() {
|
||||
List<String> list1 = Stream.generate(() -> Math.random() > 0.5 ? "foo" : "baz")
|
||||
.limit(10).filter((xyz -> <warning descr="Condition '\"bar\".equals(xyz)' is always 'false'">"bar".equals(xyz)</warning>)).collect(Collectors.toList());
|
||||
List<String> list2 = Stream.generate(() -> "xyz").limit(20).filter(<warning descr="Method reference result is always 'false'">"bar"::equals</warning>).collect(Collectors.toList());
|
||||
Stream.generate(() -> Optional.of("xyz")).filter(<warning descr="Method reference result is always 'true'">Optional::isPresent</warning>).forEach(System.out::println);
|
||||
LongStream.generate(() -> 5).limit(10).filter(x -> <warning descr="Condition 'x > 6' is always 'false'">x > 6</warning>).forEach(s -> System.out.println(s));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user