Fix crash in RequiresPermissionChecker.java
Bug: 265320139 Test: atest --host error_prone_android_framework_test Change-Id: Ia46d5e7cab4d39888c4975ded18c59d5eb918ffa
This commit is contained in:
parent
838c317e2d
commit
a5f2ae0dcb
@ -412,11 +412,11 @@ public final class RequiresPermissionChecker extends BugChecker
|
||||
|
||||
private static ParsedRequiresPermission parseRequiresPermissionRecursively(
|
||||
MethodInvocationTree tree, VisitorState state) {
|
||||
if (ENFORCE_VIA_CONTEXT.matches(tree, state)) {
|
||||
if (ENFORCE_VIA_CONTEXT.matches(tree, state) && tree.getArguments().size() > 0) {
|
||||
final ParsedRequiresPermission res = new ParsedRequiresPermission();
|
||||
res.allOf.add(String.valueOf(ASTHelpers.constValue(tree.getArguments().get(0))));
|
||||
return res;
|
||||
} else if (ENFORCE_VIA_CHECKER.matches(tree, state)) {
|
||||
} else if (ENFORCE_VIA_CHECKER.matches(tree, state) && tree.getArguments().size() > 1) {
|
||||
final ParsedRequiresPermission res = new ParsedRequiresPermission();
|
||||
res.allOf.add(String.valueOf(ASTHelpers.constValue(tree.getArguments().get(1))));
|
||||
return res;
|
||||
|
@ -415,4 +415,27 @@ public class RequiresPermissionCheckerTest {
|
||||
"}")
|
||||
.doTest();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testInvalidFunctions() {
|
||||
compilationHelper
|
||||
.addSourceFile("/android/annotation/RequiresPermission.java")
|
||||
.addSourceFile("/android/annotation/SuppressLint.java")
|
||||
.addSourceFile("/android/content/Context.java")
|
||||
.addSourceLines("Example.java",
|
||||
"import android.annotation.RequiresPermission;",
|
||||
"import android.annotation.SuppressLint;",
|
||||
"import android.content.Context;",
|
||||
"class Foo extends Context {",
|
||||
" private static final String RED = \"red\";",
|
||||
" public void checkPermission() {",
|
||||
" }",
|
||||
" @RequiresPermission(RED)",
|
||||
" // BUG: Diagnostic contains:",
|
||||
" public void exampleScoped(Context context) {",
|
||||
" checkPermission();",
|
||||
" }",
|
||||
"}")
|
||||
.doTest();
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user