NullableNotNullManagerImpl: fix possible NPE when PsiFile is null (EA-144018)

GitOrigin-RevId: 386a1481d4ffab829053134139e916842c4ad527
This commit is contained in:
Tagir Valeev
2019-06-11 17:59:42 +03:00
committed by intellij-monorepo-bot
parent 8c4737d659
commit 4018b8bad1
@@ -16,6 +16,7 @@ import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.util.CachedValueProvider;
import com.intellij.psi.util.CachedValuesManager;
import com.intellij.psi.util.PsiModificationTracker;
import com.intellij.psi.util.PsiUtilCore;
import com.intellij.util.containers.ContainerUtil;
import gnu.trove.THashSet;
import org.jdom.Element;
@@ -238,14 +239,15 @@ public class NullableNotNullManagerImpl extends NullableNotNullManager implement
if (modifierList == null) return null;
for (PsiAnnotation annotation : modifierList.getAnnotations()) {
if (container instanceof PsiPackage) {
PsiFile file = annotation.getContainingFile();
ProjectFileIndex index = ProjectRootManager.getInstance(file.getProject()).getFileIndex();
VirtualFile annotationFile = file.getVirtualFile();
VirtualFile annotationRoot = annotationFile == null ? null : index.getClassRootForFile(annotationFile);
VirtualFile ownerFile = owner.getContainingFile().getVirtualFile();
VirtualFile ownerRoot = ownerFile == null ? null : index.getClassRootForFile(ownerFile);
if (ownerRoot != null && !ownerRoot.equals(annotationRoot)) {
continue;
VirtualFile annotationFile = PsiUtilCore.getVirtualFile(annotation);
VirtualFile ownerFile = PsiUtilCore.getVirtualFile(owner);
if (annotationFile != null && ownerFile != null && !annotationFile.equals(ownerFile)) {
ProjectFileIndex index = ProjectRootManager.getInstance(container.getProject()).getFileIndex();
VirtualFile annotationRoot = index.getClassRootForFile(annotationFile);
VirtualFile ownerRoot = index.getClassRootForFile(ownerFile);
if (ownerRoot != null && !ownerRoot.equals(annotationRoot)) {
continue;
}
}
}
NullabilityAnnotationInfo result = checkNullityDefault(annotation, placeTargetTypes, superPackage);