Allow for Collections and Maps in non-internal mode

GitOrigin-RevId: a3ddd348eb7e2ff50ea4d7c51c6beaf5a2127d97
This commit is contained in:
Tagir Valeev
2020-04-29 06:26:28 +00:00
committed by intellij-monorepo-bot
parent 48b498ec70
commit a7149e200a
2 changed files with 16 additions and 10 deletions
@@ -2,11 +2,13 @@
package com.intellij.codeInsight.externalAnnotation;
import com.intellij.codeInspection.dataFlow.Mutability;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.project.Project;
import com.intellij.psi.CommonClassNames;
import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiMethod;
import com.intellij.psi.PsiModifierListOwner;
import com.siyeh.ig.psiutils.ClassUtils;
import com.intellij.psi.util.InheritanceUtil;
import com.intellij.psi.util.PsiUtil;
import org.jetbrains.annotations.NotNull;
public class UnmodifiableAnnotationProvider implements AnnotationProvider {
@@ -19,9 +21,10 @@ public class UnmodifiableAnnotationProvider implements AnnotationProvider {
@Override
public boolean isAvailable(PsiModifierListOwner owner) {
return ApplicationManager.getApplication().isInternal() &&
owner instanceof PsiMethod &&
!ClassUtils.isImmutable(((PsiMethod)owner).getReturnType());
if (!(owner instanceof PsiMethod)) return false;
PsiClass returnClass = PsiUtil.resolveClassInClassTypeOnly(((PsiMethod)owner).getReturnType());
return InheritanceUtil.isInheritor(returnClass, CommonClassNames.JAVA_UTIL_COLLECTION) ||
InheritanceUtil.isInheritor(returnClass, CommonClassNames.JAVA_UTIL_MAP);
}
@Override
@@ -2,11 +2,13 @@
package com.intellij.codeInsight.externalAnnotation;
import com.intellij.codeInspection.dataFlow.Mutability;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.project.Project;
import com.intellij.psi.CommonClassNames;
import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiMethod;
import com.intellij.psi.PsiModifierListOwner;
import com.siyeh.ig.psiutils.ClassUtils;
import com.intellij.psi.util.InheritanceUtil;
import com.intellij.psi.util.PsiUtil;
import org.jetbrains.annotations.NotNull;
public class UnmodifiableViewAnnotationProvider implements AnnotationProvider {
@@ -19,9 +21,10 @@ public class UnmodifiableViewAnnotationProvider implements AnnotationProvider {
@Override
public boolean isAvailable(PsiModifierListOwner owner) {
return ApplicationManager.getApplication().isInternal() &&
owner instanceof PsiMethod &&
!ClassUtils.isImmutable(((PsiMethod)owner).getReturnType());
if (!(owner instanceof PsiMethod)) return false;
PsiClass returnClass = PsiUtil.resolveClassInClassTypeOnly(((PsiMethod)owner).getReturnType());
return InheritanceUtil.isInheritor(returnClass, CommonClassNames.JAVA_UTIL_COLLECTION) ||
InheritanceUtil.isInheritor(returnClass, CommonClassNames.JAVA_UTIL_MAP);
}
@Override