diff --git a/java/java-impl/src/com/intellij/codeInsight/externalAnnotation/UnmodifiableAnnotationProvider.java b/java/java-impl/src/com/intellij/codeInsight/externalAnnotation/UnmodifiableAnnotationProvider.java index cffe7947a545..fcd9867699da 100644 --- a/java/java-impl/src/com/intellij/codeInsight/externalAnnotation/UnmodifiableAnnotationProvider.java +++ b/java/java-impl/src/com/intellij/codeInsight/externalAnnotation/UnmodifiableAnnotationProvider.java @@ -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 diff --git a/java/java-impl/src/com/intellij/codeInsight/externalAnnotation/UnmodifiableViewAnnotationProvider.java b/java/java-impl/src/com/intellij/codeInsight/externalAnnotation/UnmodifiableViewAnnotationProvider.java index 7cc3f40a8d54..4ba4e31a94c4 100644 --- a/java/java-impl/src/com/intellij/codeInsight/externalAnnotation/UnmodifiableViewAnnotationProvider.java +++ b/java/java-impl/src/com/intellij/codeInsight/externalAnnotation/UnmodifiableViewAnnotationProvider.java @@ -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