summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAurimas Liutikas <aurimas@google.com>2018-07-13 16:40:21 -0700
committerAurimas Liutikas <aurimas@google.com>2018-07-13 16:40:21 -0700
commit2e958569bb647461c97e85cd8276387b41f18f70 (patch)
treec305a76662bb915a31cfbc7cd131bf65c0c0cea5 /src
parent205eac053946d9db44f1d9baa6d1e40f2693de65 (diff)
downloaddoclava-2e958569bb647461c97e85cd8276387b41f18f70.tar.gz
More robust @RequiresPermission handling.
The "conditional" value doesn't have any permissions to examine. Test: builds, boots, "conditional" annotations work Bug: 73559440 Change-Id: I78b3a9c86bdc972f1a3a7817e885e994cf84f8f6 Merged-In: I78b3a9c86bdc972f1a3a7817e885e994cf84f8f6
Diffstat (limited to 'src')
-rw-r--r--src/com/google/doclava/AndroidLinter.java4
-rw-r--r--src/com/google/doclava/Stubs.java4
2 files changed, 5 insertions, 3 deletions
diff --git a/src/com/google/doclava/AndroidLinter.java b/src/com/google/doclava/AndroidLinter.java
index 399226d..c5a00f0 100644
--- a/src/com/google/doclava/AndroidLinter.java
+++ b/src/com/google/doclava/AndroidLinter.java
@@ -77,7 +77,7 @@ public class AndroidLinter implements Linter {
for (AnnotationInstanceInfo a : method.annotations()) {
if (a.type().qualifiedNameMatches("android", "annotation.RequiresPermission")) {
hasAnnotation = true;
- ArrayList<AnnotationValueInfo> values = new ArrayList<AnnotationValueInfo>();
+ ArrayList<AnnotationValueInfo> values = new ArrayList<>();
for (AnnotationValueInfo val : a.elementValues()) {
switch (val.element().name()) {
case "value":
@@ -91,6 +91,8 @@ public class AndroidLinter implements Linter {
break;
}
}
+ if (values.isEmpty()) continue;
+
for (AnnotationValueInfo value : values) {
String perm = String.valueOf(value.value());
if (perm.indexOf('.') >= 0) perm = perm.substring(perm.lastIndexOf('.') + 1);
diff --git a/src/com/google/doclava/Stubs.java b/src/com/google/doclava/Stubs.java
index 3c9138a..5a9fe5c 100644
--- a/src/com/google/doclava/Stubs.java
+++ b/src/com/google/doclava/Stubs.java
@@ -1664,11 +1664,10 @@ public class Stubs {
if (a.type().qualifiedNameMatches("android", "annotation.RequiresPermission")) {
hasAnnotation = true;
for (AnnotationValueInfo val : a.elementValues()) {
- ArrayList<AnnotationValueInfo> values = null;
+ ArrayList<AnnotationValueInfo> values = new ArrayList<>();
boolean any = false;
switch (val.element().name()) {
case "value":
- values = new ArrayList<AnnotationValueInfo>();
values.add(val);
break;
case "allOf":
@@ -1679,6 +1678,7 @@ public class Stubs {
values = (ArrayList<AnnotationValueInfo>) val.value();
break;
}
+ if (values.isEmpty()) continue;
ArrayList<String> system = new ArrayList<>();
ArrayList<String> nonSystem = new ArrayList<>();