diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/dsl/GroovyDslExecutor.groovy b/plugins/groovy/src/org/jetbrains/plugins/groovy/dsl/GroovyDslExecutor.groovy index 1db5502306e4..aca7096efa0d 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/dsl/GroovyDslExecutor.groovy +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/dsl/GroovyDslExecutor.groovy @@ -16,6 +16,7 @@ package org.jetbrains.plugins.groovy.dsl import com.intellij.openapi.application.ApplicationInfo +import com.intellij.openapi.progress.ProgressManager import com.intellij.openapi.util.Pair import com.intellij.openapi.util.text.StringUtil import com.intellij.patterns.ElementPattern @@ -181,6 +182,7 @@ public class GroovyDslExecutor { CompoundMembersHolder processVariants(GroovyClassDescriptor descriptor, ProcessingContext ctx, PsiType psiType) { CompoundMembersHolder holder = new CompoundMembersHolder() for (pair in enhancers) { + ProgressManager.checkCanceled() ctx.put(DslPointcut.BOUND, null) if (pair.first.isApplicable(descriptor, ctx)) { def generator = new CustomMembersGenerator(descriptor, psiType, ctx.get(DslPointcut.BOUND)) diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/GrReferenceResolveUtil.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/GrReferenceResolveUtil.java index cc522d2c51cb..5337ada02edc 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/GrReferenceResolveUtil.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/GrReferenceResolveUtil.java @@ -15,6 +15,7 @@ */ package org.jetbrains.plugins.groovy.lang.psi.impl.statements.expressions; +import com.intellij.openapi.progress.ProgressManager; import com.intellij.psi.*; import com.intellij.psi.scope.PsiScopeProcessor; import com.intellij.psi.util.InheritanceUtil; @@ -60,6 +61,12 @@ public class GrReferenceResolveUtil { static boolean resolveImpl(@NotNull ResolverProcessor processor, @NotNull GrReferenceExpression place) { + boolean b = doResolve(processor, place); + ProgressManager.checkCanceled(); + return b; + } + + private static boolean doResolve(ResolverProcessor processor, GrReferenceExpression place) { GrExpression qualifier = place.getQualifier(); if (qualifier == null) { if (!ResolveUtil.treeWalkUp(place, processor, true)) return false; diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/resolve/DeclarationCacheKey.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/resolve/DeclarationCacheKey.java index 8149fc79b7a5..0ce963e1eba7 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/resolve/DeclarationCacheKey.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/resolve/DeclarationCacheKey.java @@ -15,6 +15,7 @@ */ package org.jetbrains.plugins.groovy.lang.resolve; +import com.intellij.openapi.progress.ProgressManager; import com.intellij.openapi.util.Pair; import com.intellij.psi.PsiElement; import com.intellij.psi.ResolveState; @@ -149,6 +150,7 @@ class DeclarationCacheKey { boolean processCachedDeclarations(PsiElement place, PsiScopeProcessor processor) { for (DeclarationHolder holder : getAllDeclarations(place)) { + ProgressManager.checkCanceled(); if (!holder.processCachedDeclarations(processor)) { return false; } diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/resolve/NonCodeMembersContributor.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/resolve/NonCodeMembersContributor.java index 4dccee123ff5..2bc220a3963f 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/resolve/NonCodeMembersContributor.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/resolve/NonCodeMembersContributor.java @@ -17,6 +17,7 @@ package org.jetbrains.plugins.groovy.lang.resolve; import com.intellij.openapi.extensions.ExtensionPointName; +import com.intellij.openapi.progress.ProgressManager; import com.intellij.psi.PsiClass; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiType; @@ -89,6 +90,7 @@ public abstract class NonCodeMembersContributor { if (aClass != null) { for (String superClassName : TypesUtil.getSuperClassesWithCache(aClass).keySet()) { for (NonCodeMembersContributor enhancer : ourClassSpecifiedContributors.get(superClassName)) { + ProgressManager.checkCanceled(); enhancer.processDynamicElements(qualifierType, aClass, delegatingProcessor, place, state); if (!delegatingProcessor.wantMore) { return false; @@ -98,6 +100,7 @@ public abstract class NonCodeMembersContributor { } for (NonCodeMembersContributor contributor : ourAllTypeContributors) { + ProgressManager.checkCanceled(); contributor.processDynamicElements(qualifierType, aClass, delegatingProcessor, place, state); if (!delegatingProcessor.wantMore) { return false; diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/resolve/ResolveUtil.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/resolve/ResolveUtil.java index 6e605eb1e836..03c7d4dc22d5 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/resolve/ResolveUtil.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/resolve/ResolveUtil.java @@ -18,6 +18,7 @@ package org.jetbrains.plugins.groovy.lang.resolve; import com.intellij.diagnostic.LogMessageEx; import com.intellij.openapi.diagnostic.Logger; +import com.intellij.openapi.progress.ProgressManager; import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.ProjectRootManager; import com.intellij.openapi.util.Key; @@ -142,6 +143,7 @@ public class ResolveUtil { return PsiTreeUtil.treeWalkUp(place, maxScope, new PairProcessor() { @Override public boolean process(PsiElement scope, PsiElement lastParent) { + ProgressManager.checkCanceled(); if (!doProcessDeclarations(originalPlace, lastParent, scope, substituteProcessor(processor, scope), nonCodeProcessor, state)) { return false; } @@ -494,6 +496,7 @@ public class ResolveUtil { PsiElement lastParent = null; while (run != null) { + ProgressManager.checkCanceled(); if (run instanceof GrMember) { inCodeBlock = false; }