From bc88c2115b07a5cd278e70f8ea9b575622e741de Mon Sep 17 00:00:00 2001 From: Dmitry Batkovich Date: Fri, 19 Mar 2021 15:14:55 +0300 Subject: [PATCH] fix NPE when trying to show todo view for unphysical file EA-261109 GitOrigin-RevId: eb34ff58d1cfbb50a671d2742db878a666c28341 --- .../impl/search/PsiTodoSearchHelperImpl.java | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/platform/editor-ui-ex/src/com/intellij/psi/impl/search/PsiTodoSearchHelperImpl.java b/platform/editor-ui-ex/src/com/intellij/psi/impl/search/PsiTodoSearchHelperImpl.java index f06681553bec..176349bc5a09 100644 --- a/platform/editor-ui-ex/src/com/intellij/psi/impl/search/PsiTodoSearchHelperImpl.java +++ b/platform/editor-ui-ex/src/com/intellij/psi/impl/search/PsiTodoSearchHelperImpl.java @@ -5,6 +5,7 @@ import com.intellij.ide.todo.TodoConfiguration; import com.intellij.ide.todo.TodoIndexPatternProvider; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.TextRange; +import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiFile; import com.intellij.psi.impl.PsiManagerEx; import com.intellij.psi.impl.cache.TodoCacheManager; @@ -84,17 +85,23 @@ public class PsiTodoSearchHelperImpl implements PsiTodoSearchHelper { @Override public int getTodoItemsCount(@NotNull PsiFile file) { - int count = TodoCacheManager.SERVICE.getInstance(myManager.getProject()).getTodoCount(file.getVirtualFile(), TodoIndexPatternProvider.getInstance()); - if (count != -1) return count; + VirtualFile virtualFile = file.getVirtualFile(); + if (virtualFile != null) { + int count = TodoCacheManager.SERVICE.getInstance(myManager.getProject()).getTodoCount(virtualFile, TodoIndexPatternProvider.getInstance()); + if (count != -1) return count; + } return findTodoItems(file).length; } @Override public int getTodoItemsCount(@NotNull PsiFile file, @NotNull TodoPattern pattern) { - int count = TodoCacheManager.SERVICE.getInstance(myManager.getProject()).getTodoCount(file.getVirtualFile(), pattern.getIndexPattern()); - if (count != -1) return count; + VirtualFile virtualFile = file.getVirtualFile(); + int count = 0; + if (virtualFile != null) { + count = TodoCacheManager.SERVICE.getInstance(myManager.getProject()).getTodoCount(virtualFile, pattern.getIndexPattern()); + if (count != -1) return count; + } TodoItem[] items = findTodoItems(file); - count = 0; for (TodoItem item : items) { if (item.getPattern().equals(pattern)) count++; }