summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeff Sharkey <jsharkey@android.com>2017-08-08 17:02:43 -0600
committerJeff Sharkey <jsharkey@android.com>2017-08-09 09:08:53 -0600
commita45f9a931b1dce93d69d44cd3be80f7eecab8648 (patch)
treeba83a970ba1810565bafb5e5fcb9c07f12590b56
parent702a04cb1dcb722428ef5286f6c3f70d0fbf01cd (diff)
downloadplatform_external_doclava-a45f9a931b1dce93d69d44cd3be80f7eecab8648.tar.gz
platform_external_doclava-a45f9a931b1dce93d69d44cd3be80f7eecab8648.tar.bz2
platform_external_doclava-a45f9a931b1dce93d69d44cd3be80f7eecab8648.zip
Fix handling of @removed APIs.
The @removed docs tag means that a particular API should be considered as removed from the API surface area that it otherwise would have been exposed through. This set of CLs is fixing a bug where we @removed had been treated as always removing from the public API. Bug: 62341924 Test: make -j32 update-api Change-Id: Iee6199eb3da46d5068a06c69d423fb2019fdc8df
-rw-r--r--src/com/google/doclava/ClassInfo.java3
-rw-r--r--src/com/google/doclava/MemberInfo.java8
-rw-r--r--src/com/google/doclava/Stubs.java12
3 files changed, 8 insertions, 15 deletions
diff --git a/src/com/google/doclava/ClassInfo.java b/src/com/google/doclava/ClassInfo.java
index b152508..af5286d 100644
--- a/src/com/google/doclava/ClassInfo.java
+++ b/src/com/google/doclava/ClassInfo.java
@@ -1510,9 +1510,6 @@ public class ClassInfo extends DocInfo implements ContainerInfo, Comparable, Sco
public boolean isRemovedImpl() {
ClassInfo cl = this;
while (cl != null) {
- if (cl.hasShowAnnotation()) {
- return false;
- }
PackageInfo pkg = cl.containingPackage();
if (pkg != null && pkg.hasRemovedComment()) {
return true;
diff --git a/src/com/google/doclava/MemberInfo.java b/src/com/google/doclava/MemberInfo.java
index 8c88648..8e7863e 100644
--- a/src/com/google/doclava/MemberInfo.java
+++ b/src/com/google/doclava/MemberInfo.java
@@ -53,14 +53,6 @@ public abstract class MemberInfo extends DocInfo implements Comparable, Scoped {
}
@Override
- public boolean isRemoved() {
- if (mShowAnnotations.size() > 0) {
- return false;
- }
- return super.isRemoved();
- }
-
- @Override
public boolean isHiddenOrRemoved() {
return isHidden() || isRemoved();
}
diff --git a/src/com/google/doclava/Stubs.java b/src/com/google/doclava/Stubs.java
index 479b5ae..4dc859d 100644
--- a/src/com/google/doclava/Stubs.java
+++ b/src/com/google/doclava/Stubs.java
@@ -1230,14 +1230,16 @@ public class Stubs {
ClassInfo clazz = member.containingClass();
boolean visible = member.isPublic() || member.isProtected();
+ boolean hidden = member.isHidden();
boolean removed = member.isRemoved();
while (clazz != null) {
visible &= clazz.isPublic() || clazz.isProtected();
+ hidden |= clazz.isHidden();
removed |= clazz.isRemoved();
clazz = clazz.containingClass();
}
- if (visible && removed) {
+ if (visible && !hidden && removed) {
if (member instanceof MethodInfo) {
final MethodInfo method = (MethodInfo) member;
return (method.findOverriddenMethod(method.name(), method.signature()) == null);
@@ -1257,15 +1259,17 @@ public class Stubs {
boolean visible = member.isPublic() || member.isProtected();
boolean hasShowAnnotation = member.hasShowAnnotation();
- boolean hiddenOrRemoved = member.isHiddenOrRemoved();
+ boolean hidden = member.isHidden();
+ boolean removed = member.isRemoved();
while (clazz != null) {
visible &= clazz.isPublic() || clazz.isProtected();
hasShowAnnotation |= clazz.hasShowAnnotation();
- hiddenOrRemoved |= clazz.isHiddenOrRemoved();
+ hidden |= clazz.isHidden();
+ removed |= clazz.isRemoved();
clazz = clazz.containingClass();
}
- if (visible && hasShowAnnotation && !hiddenOrRemoved) {
+ if (visible && hasShowAnnotation && !hidden && !removed) {
if (member instanceof MethodInfo) {
final MethodInfo method = (MethodInfo) member;
return (method.findOverriddenMethod(method.name(), method.signature()) == null);