ExpressionUtils#isSimpleExpression: consider Collections.emptyXyz as simple (they are just static field getters)

This commit is contained in:
Tagir Valeev
2018-01-19 15:07:20 +07:00
parent 7229da1df2
commit b3b019e5b7
2 changed files with 9 additions and 1 deletions
@@ -9,7 +9,7 @@ public class TestFile {
public static Collection<String> example() {
final Optional<String> root = Optional.empty();
return root.<Collection<String>>map(TestFile::foo).orElseGet(Collections::emptyList);
return root.<Collection<String>>map(TestFile::foo).orElse(Collections.emptyList());
}
private static Set<String> foo(String s) {
@@ -27,6 +27,7 @@ import com.intellij.psi.util.*;
import com.intellij.psi.util.InheritanceUtil;
import com.intellij.util.ArrayUtil;
import com.siyeh.HardcodedMethodConstants;
import com.siyeh.ig.callMatcher.CallMatcher;
import one.util.streamex.StreamEx;
import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.NonNls;
@@ -49,6 +50,10 @@ public class ExpressionUtils {
convertableBoxedClassNames.add(CommonClassNames.JAVA_LANG_SHORT);
}
private static final CallMatcher KNOWN_SIMPLE_CALLS =
CallMatcher.staticCall(CommonClassNames.JAVA_UTIL_COLLECTIONS, "emptyList", "emptySet", "emptyIterator", "emptyMap", "emptySortedMap",
"emptySortedSet", "emptyListIterator").parameterCount(0);
private ExpressionUtils() {}
@Nullable
@@ -759,6 +764,9 @@ public class ExpressionUtils {
if(resolvedQualifier instanceof PsiClass) return true;
}
}
if (expression instanceof PsiMethodCallExpression) {
return KNOWN_SIMPLE_CALLS.test((PsiMethodCallExpression)expression);
}
return false;
}