more checkCanceled

This commit is contained in:
Alexey Kudravtsev
2016-07-18 12:57:21 +03:00
parent e6137f81ff
commit 3ca51e434b
4 changed files with 18 additions and 5 deletions
@@ -27,6 +27,7 @@ import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.editor.FoldingGroup;
import com.intellij.openapi.progress.ProgressIndicatorProvider;
import com.intellij.openapi.progress.ProgressManager;
import com.intellij.openapi.project.DumbAware;
import com.intellij.openapi.project.DumbService;
import com.intellij.openapi.project.IndexNotReadyException;
@@ -522,6 +523,7 @@ public abstract class JavaFoldingBuilderBase extends CustomFoldingBuilder implem
PsiClass[] classes = file.getClasses();
for (PsiClass aClass : classes) {
ProgressManager.checkCanceled();
ProgressIndicatorProvider.checkCanceled();
addElementsToFold(descriptors, aClass, document, true, quick);
}
@@ -38,6 +38,7 @@ import com.intellij.openapi.editor.markup.SeparatorPlacement;
import com.intellij.openapi.progress.EmptyProgressIndicator;
import com.intellij.openapi.progress.ProcessCanceledException;
import com.intellij.openapi.progress.ProgressIndicator;
import com.intellij.openapi.progress.ProgressManager;
import com.intellij.openapi.project.DumbAware;
import com.intellij.openapi.project.DumbService;
import com.intellij.openapi.project.IndexNotReadyException;
@@ -163,12 +164,12 @@ public class LineMarkersPass extends TextEditorHighlightingPass implements LineM
@NotNull ProgressIndicator progress) throws ProcessCanceledException {
ApplicationManager.getApplication().assertReadAccessAllowed();
//noinspection ForLoopReplaceableByForEach
for (int i = 0, elementsSize = elements.size(); i < elementsSize; i++) {
for (int i = 0; i < elements.size(); i++) {
PsiElement element = elements.get(i);
progress.checkCanceled();
//noinspection ForLoopReplaceableByForEach
for (int j = 0, providersSize = providers.size(); j < providersSize; j++) {
for (int j = 0; j < providers.size(); j++) {
ProgressManager.checkCanceled();
LineMarkerProvider provider = providers.get(j);
LineMarkerInfo info;
try {
@@ -24,6 +24,7 @@ import com.intellij.lang.Language;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.progress.ProcessCanceledException;
import com.intellij.openapi.progress.ProgressIndicator;
import com.intellij.openapi.progress.ProgressManager;
import com.intellij.openapi.project.DumbAware;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.TextRange;
@@ -75,6 +76,7 @@ class SlowLineMarkersPass extends TextEditorHighlightingPass implements LineMark
@NotNull List<LineMarkerInfo> result,
@NotNull ProgressIndicator progress) throws ProcessCanceledException {
for (LineMarkerProvider provider : providers) {
ProgressManager.checkCanceled();
provider.collectSlowLineMarkers(elements, result);
}
}
@@ -15,6 +15,7 @@
*/
package com.siyeh.ig.threading;
import com.intellij.openapi.progress.ProgressManager;
import com.intellij.openapi.util.Key;
import com.intellij.psi.*;
import com.intellij.psi.search.SearchScope;
@@ -202,14 +203,16 @@ class VariableAccessVisitor extends JavaRecursiveElementWalkingVisitor {
new HashSet<PsiMethod>(usedMethods);
boolean stabilized = false;
while (!stabilized) {
ProgressManager.checkCanceled();
stabilized = true;
final Set<PsiMethod> methodsDeterminedThisPass =
new HashSet<PsiMethod>();
for (PsiMethod method : remainingMethods) {
final Collection<PsiReference> references =
referenceMap.get(method);
ProgressManager.checkCanceled();
final Collection<PsiReference> references = referenceMap.get(method);
boolean areAllReferencesSynchronized = true;
for (PsiReference reference : references) {
ProgressManager.checkCanceled();
if (isKnownToBeUsed(reference)) {
if (isInKnownUnsynchronizedContext(reference)) {
methodsNotAlwaysSynchronized.add(method);
@@ -242,13 +245,16 @@ class VariableAccessVisitor extends JavaRecursiveElementWalkingVisitor {
new HashSet<PsiMethod>(privateMethods);
boolean stabilized = false;
while (!stabilized) {
ProgressManager.checkCanceled();
stabilized = true;
final Set<PsiMethod> methodsDeterminedThisPass =
new HashSet<PsiMethod>();
for (PsiMethod method : remainingMethods) {
ProgressManager.checkCanceled();
final Collection<PsiReference> references =
referenceMap.get(method);
for (PsiReference reference : references) {
ProgressManager.checkCanceled();
if (isKnownToBeUsed(reference)) {
usedMethods.add(method);
methodsDeterminedThisPass.add(method);
@@ -266,6 +272,7 @@ class VariableAccessVisitor extends JavaRecursiveElementWalkingVisitor {
final HashMap<PsiMethod, Collection<PsiReference>> referenceMap =
new HashMap<PsiMethod, Collection<PsiReference>>();
for (PsiMethod method : privateMethods) {
ProgressManager.checkCanceled();
final SearchScope scope = method.getUseScope();
final Collection<PsiReference> references =
ReferencesSearch.search(method, scope).findAll();
@@ -278,6 +285,7 @@ class VariableAccessVisitor extends JavaRecursiveElementWalkingVisitor {
final Set<PsiMethod> privateMethods = new HashSet<PsiMethod>();
final PsiMethod[] methods = aClass.getMethods();
for (PsiMethod method : methods) {
ProgressManager.checkCanceled();
if (method.hasModifierProperty(PsiModifier.PRIVATE)) {
privateMethods.add(method);
}