summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Brazdil <dbrazdil@google.com>2018-03-08 14:02:46 +0000
committerDavid Brazdil <dbrazdil@google.com>2018-04-09 11:44:32 +0100
commit6a7e107ad0c958687c4e80ef332f9ed999f50eb5 (patch)
tree1bf8f13b9a6cd7217198015f3d74bc7cc50b71e9
parent3637c6ebf6d5eca4ad12679f414c7bc60e60b4b5 (diff)
downloadplatform_external_doclava-6a7e107ad0c958687c4e80ef332f9ed999f50eb5.tar.gz
platform_external_doclava-6a7e107ad0c958687c4e80ef332f9ed999f50eb5.tar.bz2
platform_external_doclava-6a7e107ad0c958687c4e80ef332f9ed999f50eb5.zip
Do not include cloned members in DEX API listings
Doclava eagerly clones class members into child classes in case the original class is hidden. These do not correspond to actual class members in the DEX files and are therefore redundant in the DEX signature listings. Change the predicate to exclude them. Bug: 64382372 Test: check output, IBinder.DUMP_TRANSACTION should only appear in IBinder Change-Id: Ida75407b392446228c06d52c7bdd94087725e5ac (cherry picked from commit 7fd6e09612e65cac3ef0deaad89ebdc95b00e64c)
-rw-r--r--src/com/google/doclava/MemberInfo.java4
-rw-r--r--src/com/google/doclava/Stubs.java5
2 files changed, 7 insertions, 2 deletions
diff --git a/src/com/google/doclava/MemberInfo.java b/src/com/google/doclava/MemberInfo.java
index 8e7863e..797b1b9 100644
--- a/src/com/google/doclava/MemberInfo.java
+++ b/src/com/google/doclava/MemberInfo.java
@@ -136,6 +136,10 @@ public abstract class MemberInfo extends DocInfo implements Comparable, Scoped {
return mContainingClass;
}
+ public boolean isCloned() {
+ return mContainingClass != mRealContainingClass;
+ }
+
/**
* Returns {@code true} if the member's scope is above the minimum requested scope passed to
* Doclava. Provided that the {@code -showAnnotationOverridesVisibility} argument was passed to
diff --git a/src/com/google/doclava/Stubs.java b/src/com/google/doclava/Stubs.java
index c4453af..3d260ea 100644
--- a/src/com/google/doclava/Stubs.java
+++ b/src/com/google/doclava/Stubs.java
@@ -253,7 +253,8 @@ public class Stubs {
ApiPredicate apiReference = new ApiPredicate().setIgnoreShown(true);
Predicate<MemberInfo> apiEmit = apiFilter.and(new ElidingPredicate(apiReference));
- Predicate<MemberInfo> privateEmit = apiFilter.negate();
+ Predicate<MemberInfo> memberIsNotCloned = (x -> !x.isCloned());
+ Predicate<MemberInfo> privateEmit = memberIsNotCloned.and(apiFilter.negate());
Predicate<MemberInfo> privateReference = (x -> true);
FilterPredicate removedFilter =
@@ -1563,7 +1564,7 @@ public class Stubs {
.sorted(MethodInfo.comparator).collect(Collectors.toList());
List<FieldInfo> enums = cl.getExhaustiveEnumConstants().stream().filter(filterEmit)
.sorted(FieldInfo.comparator).collect(Collectors.toList());
- List<FieldInfo> fields = cl.filteredFields(filterEmit).stream()
+ List<FieldInfo> fields = cl.getExhaustiveFields().stream().filter(filterEmit)
.sorted(FieldInfo.comparator).collect(Collectors.toList());
for (MethodInfo mi : constructors) {