summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/com/google/doclava/Stubs.java8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/com/google/doclava/Stubs.java b/src/com/google/doclava/Stubs.java
index fa82802..efcf89b 100644
--- a/src/com/google/doclava/Stubs.java
+++ b/src/com/google/doclava/Stubs.java
@@ -745,7 +745,13 @@ public class Stubs {
if (!om.isAbstract()) {
// If the parent is hidden or removed, we can't rely on it to provide
// the API
- if (!om.isHiddenOrRemoved()) {
+ // TODO This check will false positive on cases of a method declared
+ // in a non-hidden class, overidden in a hidden class, and then overidden
+ // again in a non-hidden subclass of the hidden class
+ // (non-hidden->hidden->non-hidden), and will redundantly output a method
+ // entry for the non-hidden sub-subclass. Thankfully, this pattern tends
+ // to be quite rare.
+ if (!om.isHiddenOrRemoved() && !om.containingClass().isHiddenOrRemoved()) {
// If the only "override" turns out to be in our own class
// (which sometimes happens in concrete subclasses of
// abstract base classes), it's not really an override