All annotation methods are pure

GitOrigin-RevId: 728b66cdd1070f48652ddba4beaa6410b9a1a5b3
This commit is contained in:
Tagir Valeev
2020-04-20 10:45:12 +00:00
committed by intellij-monorepo-bot
parent e9abcbe265
commit e5e0756b9a
3 changed files with 21 additions and 0 deletions
@@ -8,6 +8,7 @@ import com.intellij.psi.*;
import com.intellij.psi.util.CachedValueProvider;
import com.intellij.psi.util.CachedValuesManager;
import com.intellij.psi.util.PsiModificationTracker;
import com.intellij.psi.util.PsiUtil;
import com.intellij.util.ObjectUtils;
import com.siyeh.ig.psiutils.ExpressionUtils;
import com.siyeh.ig.psiutils.MethodCallUtils;
@@ -106,6 +107,7 @@ public class JavaMethodContractUtil {
static class ContractInfo {
static final ContractInfo EMPTY = new ContractInfo(Collections.emptyList(), false, false, MutationSignature.UNKNOWN);
static final ContractInfo PURE = new ContractInfo(Collections.emptyList(), true, false, MutationSignature.PURE);
private final @NotNull List<StandardMethodContract> myContracts;
private final boolean myPure;
@@ -139,6 +141,9 @@ public class JavaMethodContractUtil {
}
static @NotNull ContractInfo getContractInfo(@NotNull PsiMethod method) {
if (PsiUtil.isAnnotationMethod(method)) {
return ContractInfo.PURE;
}
return CachedValuesManager.getCachedValue(method, () -> {
final PsiAnnotation contractAnno = findContractAnnotation(method);
ContractInfo info = ContractInfo.EMPTY;
@@ -0,0 +1,8 @@
// "Simplify 'my.value() == null' to false" "true"
class Test {
void some(SuppressWarnings my) {
if (my == null) {
System.out.println("null");
}
}
}
@@ -0,0 +1,8 @@
// "Simplify 'my.value() == null' to false" "true"
class Test {
void some(SuppressWarnings my) {
if (my == null || my.value() =<caret>= null) {
System.out.println("null");
}
}
}