diff options
author | android-build-team Robot <android-build-team-robot@google.com> | 2017-06-13 07:29:06 +0000 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2017-06-13 07:29:06 +0000 |
commit | 879d93e2e36b2fbf7b5216c2da65536232a1c08c (patch) | |
tree | 0d91dd71cbd406b30bd4dc8a4ec6b6f44924a107 | |
parent | 3b4f72b9f1263ffea1f24119ec0e510a1e7761d2 (diff) | |
parent | 4c4643b47bfe31bec46e0de9ac10448bbe3d3c1d (diff) | |
download | platform_external_doclava-879d93e2e36b2fbf7b5216c2da65536232a1c08c.tar.gz platform_external_doclava-879d93e2e36b2fbf7b5216c2da65536232a1c08c.tar.bz2 platform_external_doclava-879d93e2e36b2fbf7b5216c2da65536232a1c08c.zip |
release-request-998756e3-f9eb-4510-98be-1a27f60bee38-for-git_oc-mr1-release-4094614 snap-temp-L07300000073564509
Change-Id: I7113f8e38d17f362d963dde3542a8549270ff120
-rw-r--r-- | src/com/google/doclava/AndroidAuxSource.java | 34 | ||||
-rw-r--r-- | src/com/google/doclava/AuxSource.java | 4 | ||||
-rw-r--r-- | src/com/google/doclava/MethodInfo.java | 2 |
3 files changed, 31 insertions, 9 deletions
diff --git a/src/com/google/doclava/AndroidAuxSource.java b/src/com/google/doclava/AndroidAuxSource.java index d006af0..8ed9fb0 100644 --- a/src/com/google/doclava/AndroidAuxSource.java +++ b/src/com/google/doclava/AndroidAuxSource.java @@ -20,6 +20,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.regex.Pattern; public class AndroidAuxSource implements AuxSource { private static final int TYPE_FIELD = 0; @@ -77,31 +78,44 @@ public class AndroidAuxSource implements AuxSource { @Override public TagInfo[] fieldAuxTags(FieldInfo field) { if (hasSuppress(field)) return TagInfo.EMPTY_ARRAY; - return auxTags(TYPE_FIELD, field.annotations()); + return auxTags(TYPE_FIELD, field.annotations(), toString(field.inlineTags())); } @Override public TagInfo[] methodAuxTags(MethodInfo method) { if (hasSuppress(method)) return TagInfo.EMPTY_ARRAY; - return auxTags(TYPE_METHOD, method.annotations()); + return auxTags(TYPE_METHOD, method.annotations(), toString(method.inlineTags().tags())); } @Override - public TagInfo[] paramAuxTags(MethodInfo method, ParameterInfo param) { + public TagInfo[] paramAuxTags(MethodInfo method, ParameterInfo param, String comment) { if (hasSuppress(method)) return TagInfo.EMPTY_ARRAY; if (hasSuppress(param.annotations())) return TagInfo.EMPTY_ARRAY; - return auxTags(TYPE_PARAM, param.annotations()); + return auxTags(TYPE_PARAM, param.annotations(), new String[] { comment }); } @Override public TagInfo[] returnAuxTags(MethodInfo method) { if (hasSuppress(method)) return TagInfo.EMPTY_ARRAY; - return auxTags(TYPE_RETURN, method.annotations()); + return auxTags(TYPE_RETURN, method.annotations(), toString(method.returnTags().tags())); } - private static TagInfo[] auxTags(int type, List<AnnotationInstanceInfo> annotations) { + private static TagInfo[] auxTags(int type, List<AnnotationInstanceInfo> annotations, + String[] comment) { ArrayList<TagInfo> tags = new ArrayList<>(); for (AnnotationInstanceInfo annotation : annotations) { + // Ignore null-related annotations when docs already mention + if (annotation.type().qualifiedNameMatches("android", "annotation.NonNull") + || annotation.type().qualifiedNameMatches("android", "annotation.Nullable")) { + boolean mentionsNull = false; + for (String c : comment) { + mentionsNull |= Pattern.compile("\\bnull\\b").matcher(c).find(); + } + if (mentionsNull) { + continue; + } + } + // Blindly include docs requested by annotations ParsedTagInfo[] docTags = ParsedTagInfo.EMPTY_ARRAY; switch (type) { @@ -238,6 +252,14 @@ public class AndroidAuxSource implements AuxSource { return tags.toArray(TagInfo.getArray(tags.size())); } + private static String[] toString(TagInfo[] tags) { + final String[] res = new String[tags.length]; + for (int i = 0; i < res.length; i++) { + res[i] = tags[i].text(); + } + return res; + } + private static boolean hasSuppress(MemberInfo member) { return hasSuppress(member.annotations()) || hasSuppress(member.containingClass().annotations()); diff --git a/src/com/google/doclava/AuxSource.java b/src/com/google/doclava/AuxSource.java index 03594f5..df03546 100644 --- a/src/com/google/doclava/AuxSource.java +++ b/src/com/google/doclava/AuxSource.java @@ -20,7 +20,7 @@ public interface AuxSource { public TagInfo[] classAuxTags(ClassInfo clazz); public TagInfo[] fieldAuxTags(FieldInfo field); public TagInfo[] methodAuxTags(MethodInfo method); - public TagInfo[] paramAuxTags(MethodInfo method, ParameterInfo param); + public TagInfo[] paramAuxTags(MethodInfo method, ParameterInfo param, String comment); public TagInfo[] returnAuxTags(MethodInfo method); } @@ -41,7 +41,7 @@ class EmptyAuxSource implements AuxSource { } @Override - public TagInfo[] paramAuxTags(MethodInfo method, ParameterInfo param) { + public TagInfo[] paramAuxTags(MethodInfo method, ParameterInfo param, String comment) { return TagInfo.EMPTY_ARRAY; } diff --git a/src/com/google/doclava/MethodInfo.java b/src/com/google/doclava/MethodInfo.java index 5ed58eb..47b1978 100644 --- a/src/com/google/doclava/MethodInfo.java +++ b/src/com/google/doclava/MethodInfo.java @@ -513,7 +513,7 @@ public class MethodInfo extends MemberInfo implements AbstractMethodInfo, Resolv } // Collect all docs requested by annotations - TagInfo[] auxTags = Doclava.auxSource.paramAuxTags(this, param); + TagInfo[] auxTags = Doclava.auxSource.paramAuxTags(this, param, comment); // Okay, now add the collected parameter information to the method data mParamTags[i] = |