Lint: Add several checkCancelled() checks to UElementVisitor

This commit is contained in:
Yan Zhulanow
2016-10-17 19:44:55 +03:00
committed by Yan Zhulanow
parent 65cea7e92c
commit 7338980d00
@@ -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<VisitingDetector> 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)) {