From b3b019e5b7043ee4520ad563b17db809d9be5150 Mon Sep 17 00:00:00 2001 From: Tagir Valeev Date: Fri, 19 Jan 2018 12:42:22 +0700 Subject: [PATCH] ExpressionUtils#isSimpleExpression: consider Collections.emptyXyz as simple (they are just static field getters) --- .../optionalIsPresent/afterDifferentTrueFalseTypes.java | 2 +- .../src/com/siyeh/ig/psiutils/ExpressionUtils.java | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/optionalIsPresent/afterDifferentTrueFalseTypes.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/optionalIsPresent/afterDifferentTrueFalseTypes.java index 2383e93f0d3f..a9a345dc450c 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/optionalIsPresent/afterDifferentTrueFalseTypes.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/optionalIsPresent/afterDifferentTrueFalseTypes.java @@ -9,7 +9,7 @@ public class TestFile { public static Collection example() { final Optional root = Optional.empty(); - return root.>map(TestFile::foo).orElseGet(Collections::emptyList); + return root.>map(TestFile::foo).orElse(Collections.emptyList()); } private static Set foo(String s) { diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/ExpressionUtils.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/ExpressionUtils.java index 7dad9ecfb65a..e13a35605dd8 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/ExpressionUtils.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/ExpressionUtils.java @@ -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; }