diff --git a/platform/lang-api/src/com/intellij/psi/PsiElementVisitor.java b/platform/lang-api/src/com/intellij/psi/PsiElementVisitor.java index b9f71bd2e87d..1820be11489b 100644 --- a/platform/lang-api/src/com/intellij/psi/PsiElementVisitor.java +++ b/platform/lang-api/src/com/intellij/psi/PsiElementVisitor.java @@ -15,6 +15,7 @@ */ package com.intellij.psi; +import com.intellij.openapi.progress.ProgressManager; import com.intellij.psi.templateLanguages.OuterLanguageElement; /** @@ -24,6 +25,7 @@ import com.intellij.psi.templateLanguages.OuterLanguageElement; */ public abstract class PsiElementVisitor { public void visitElement(PsiElement element) { + ProgressManager.getInstance().checkCanceled(); } public void visitFile(PsiFile file) { diff --git a/platform/lang-api/src/com/intellij/psi/PsiRecursiveElementVisitor.java b/platform/lang-api/src/com/intellij/psi/PsiRecursiveElementVisitor.java index be59b0ed661b..4f5ec8581964 100644 --- a/platform/lang-api/src/com/intellij/psi/PsiRecursiveElementVisitor.java +++ b/platform/lang-api/src/com/intellij/psi/PsiRecursiveElementVisitor.java @@ -15,6 +15,8 @@ */ package com.intellij.psi; +import com.intellij.openapi.progress.ProgressManager; + import java.util.List; /** @@ -37,6 +39,8 @@ public abstract class PsiRecursiveElementVisitor extends PsiElementVisitor { public void visitElement(final PsiElement element) { level++; if (level < MAX_LEVEL_DEPTH) { + ProgressManager.getInstance().checkCanceled(); + element.acceptChildren(this); } level--; diff --git a/platform/lang-api/src/com/intellij/psi/PsiRecursiveElementWalkingVisitor.java b/platform/lang-api/src/com/intellij/psi/PsiRecursiveElementWalkingVisitor.java index 447739bde5f6..6f00fdfc6a10 100644 --- a/platform/lang-api/src/com/intellij/psi/PsiRecursiveElementWalkingVisitor.java +++ b/platform/lang-api/src/com/intellij/psi/PsiRecursiveElementWalkingVisitor.java @@ -15,6 +15,8 @@ */ package com.intellij.psi; +import com.intellij.openapi.progress.ProgressManager; + import java.util.List; /** @@ -38,6 +40,8 @@ public abstract class PsiRecursiveElementWalkingVisitor extends PsiElementVisito } public void visitElement(final PsiElement element) { + ProgressManager.getInstance().checkCanceled(); + myWalkingState.elementStarted(element); }