From 7338980d00cdae2f7787dfc7bb9ebc3bb3531f68 Mon Sep 17 00:00:00 2001 From: Yan Zhulanow Date: Mon, 17 Oct 2016 19:44:55 +0300 Subject: [PATCH] Lint: Add several checkCancelled() checks to UElementVisitor --- .../tools/klint/client/api/UElementVisitor.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/plugins/lint/lint-api/src/com/android/tools/klint/client/api/UElementVisitor.java b/plugins/lint/lint-api/src/com/android/tools/klint/client/api/UElementVisitor.java index 22dcea432a4..86e32e71fd6 100644 --- a/plugins/lint/lint-api/src/com/android/tools/klint/client/api/UElementVisitor.java +++ b/plugins/lint/lint-api/src/com/android/tools/klint/client/api/UElementVisitor.java @@ -31,6 +31,7 @@ import com.android.tools.klint.detector.api.JavaContext; import com.google.common.collect.Maps; import com.google.common.collect.Sets; import com.intellij.openapi.progress.ProcessCanceledException; +import com.intellij.openapi.progress.ProgressManager; import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.StandardFileSystems; import com.intellij.openapi.vfs.VirtualFile; @@ -259,6 +260,7 @@ public class UElementVisitor { @Override public void run() { UastVisitor visitor = v.getVisitor(); + ProgressManager.checkCanceled(); uFile.accept(visitor); } }); @@ -295,6 +297,7 @@ public class UElementVisitor { @Override public void run() { for (VisitingDetector v : mAllDetectors) { + ProgressManager.checkCanceled(); v.getDetector().afterCheckFile(context); } } @@ -457,6 +460,8 @@ public class UElementVisitor { } private void checkClass(@NonNull UClass node) { + ProgressManager.checkCanceled(); + if (node instanceof PsiTypeParameter) { // Not included: explained in javadoc for JavaPsiScanner#checkClass return; @@ -999,6 +1004,10 @@ public class UElementVisitor { @Override public boolean visitSimpleNameReferenceExpression(USimpleNameReferenceExpression node) { + if (mVisitReferences || mVisitResources) { + ProgressManager.checkCanceled(); + } + if (mVisitReferences) { List list = mReferenceDetectors.get(node.getIdentifier()); if (list != null) { @@ -1038,6 +1047,8 @@ public class UElementVisitor { public boolean visitCallExpression(UCallExpression node) { boolean result = super.visitCallExpression(node); + ProgressManager.checkCanceled(); + if (UastExpressionUtils.isMethodCall(node)) { visitMethodCallExpression(node); } else if (UastExpressionUtils.isConstructorCall(node)) {