Lint: Add several checkCancelled() checks to UElementVisitor
This commit is contained in:
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)) {
|
||||||
|
|||||||
Reference in New Issue
Block a user