diff options
author | David Brazdil <dbrazdil@google.com> | 2018-03-08 14:02:46 +0000 |
---|---|---|
committer | David Brazdil <dbrazdil@google.com> | 2018-04-09 11:44:32 +0100 |
commit | 6a7e107ad0c958687c4e80ef332f9ed999f50eb5 (patch) | |
tree | 1bf8f13b9a6cd7217198015f3d74bc7cc50b71e9 | |
parent | 3637c6ebf6d5eca4ad12679f414c7bc60e60b4b5 (diff) | |
download | platform_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.java | 4 | ||||
-rw-r--r-- | src/com/google/doclava/Stubs.java | 5 |
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) { |