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.Maps;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
import com.intellij.openapi.progress.ProcessCanceledException; import com.intellij.openapi.progress.ProcessCanceledException;
import com.intellij.openapi.progress.ProgressManager;
import com.intellij.openapi.project.Project; import com.intellij.openapi.project.Project;
import com.intellij.openapi.vfs.StandardFileSystems; import com.intellij.openapi.vfs.StandardFileSystems;
import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.VirtualFile;
@@ -259,6 +260,7 @@ public class UElementVisitor {
@Override @Override
public void run() { public void run() {
UastVisitor visitor = v.getVisitor(); UastVisitor visitor = v.getVisitor();
ProgressManager.checkCanceled();
uFile.accept(visitor); uFile.accept(visitor);
} }
}); });
@@ -295,6 +297,7 @@ public class UElementVisitor {
@Override @Override
public void run() { public void run() {
for (VisitingDetector v : mAllDetectors) { for (VisitingDetector v : mAllDetectors) {
ProgressManager.checkCanceled();
v.getDetector().afterCheckFile(context); v.getDetector().afterCheckFile(context);
} }
} }
@@ -457,6 +460,8 @@ public class UElementVisitor {
} }
private void checkClass(@NonNull UClass node) { private void checkClass(@NonNull UClass node) {
ProgressManager.checkCanceled();
if (node instanceof PsiTypeParameter) { if (node instanceof PsiTypeParameter) {
// Not included: explained in javadoc for JavaPsiScanner#checkClass // Not included: explained in javadoc for JavaPsiScanner#checkClass
return; return;
@@ -999,6 +1004,10 @@ public class UElementVisitor {
@Override @Override
public boolean visitSimpleNameReferenceExpression(USimpleNameReferenceExpression node) { public boolean visitSimpleNameReferenceExpression(USimpleNameReferenceExpression node) {
if (mVisitReferences || mVisitResources) {
ProgressManager.checkCanceled();
}
if (mVisitReferences) { if (mVisitReferences) {
List<VisitingDetector> list = mReferenceDetectors.get(node.getIdentifier()); List<VisitingDetector> list = mReferenceDetectors.get(node.getIdentifier());
if (list != null) { if (list != null) {
@@ -1038,6 +1047,8 @@ public class UElementVisitor {
public boolean visitCallExpression(UCallExpression node) { public boolean visitCallExpression(UCallExpression node) {
boolean result = super.visitCallExpression(node); boolean result = super.visitCallExpression(node);
ProgressManager.checkCanceled();
if (UastExpressionUtils.isMethodCall(node)) { if (UastExpressionUtils.isMethodCall(node)) {
visitMethodCallExpression(node); visitMethodCallExpression(node);
} else if (UastExpressionUtils.isConstructorCall(node)) { } else if (UastExpressionUtils.isConstructorCall(node)) {