src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/VisibleMemberTable.java
changeset 58477 d148a7e7160c
parent 55064 cb35ce1770a0
equal deleted inserted replaced
58474:74094a60d018 58477:d148a7e7160c
   207      * @return a list of visible enclosed members
   207      * @return a list of visible enclosed members
   208      */
   208      */
   209     public List<? extends Element> getVisibleMembers(Kind kind) {
   209     public List<? extends Element> getVisibleMembers(Kind kind) {
   210         Predicate<Element> declaredAndLeafMembers = e -> {
   210         Predicate<Element> declaredAndLeafMembers = e -> {
   211             TypeElement encl = utils.getEnclosingTypeElement(e);
   211             TypeElement encl = utils.getEnclosingTypeElement(e);
   212             return encl == te || isUndocumentedEnclosure(encl);
   212             return encl == te || utils.isUndocumentedEnclosure(encl);
   213         };
   213         };
   214         return getVisibleMembers(kind, declaredAndLeafMembers);
   214         return getVisibleMembers(kind, declaredAndLeafMembers);
   215     }
   215     }
   216 
   216 
   217     /**
   217     /**
   236      */
   236      */
   237     public ExecutableElement getOverriddenMethod(ExecutableElement e) {
   237     public ExecutableElement getOverriddenMethod(ExecutableElement e) {
   238         ensureInitialized();
   238         ensureInitialized();
   239 
   239 
   240         OverridingMethodInfo found = overriddenMethodTable.get(e);
   240         OverridingMethodInfo found = overriddenMethodTable.get(e);
   241         if (found != null && (found.simpleOverride || isUndocumentedEnclosure(utils.getEnclosingTypeElement(e)))) {
   241         if (found != null
       
   242                 && (found.simpleOverride || utils.isUndocumentedEnclosure(utils.getEnclosingTypeElement(e)))) {
   242             return found.overrider;
   243             return found.overrider;
   243         }
   244         }
   244         return null;
   245         return null;
   245     }
   246     }
   246 
   247 
   343      */
   344      */
   344     public ExecutableElement getPropertySetter(ExecutableElement propertyMethod) {
   345     public ExecutableElement getPropertySetter(ExecutableElement propertyMethod) {
   345         ensureInitialized();
   346         ensureInitialized();
   346         PropertyMembers pm =  propertyMap.get(propertyMethod);
   347         PropertyMembers pm =  propertyMap.get(propertyMethod);
   347         return pm == null ? null : pm.setter;
   348         return pm == null ? null : pm.setter;
   348     }
       
   349 
       
   350     boolean isUndocumentedEnclosure(TypeElement encl) {
       
   351         return utils.isPackagePrivate(encl) && !utils.isLinkable(encl);
       
   352     }
   349     }
   353 
   350 
   354     private void computeParents() {
   351     private void computeParents() {
   355         for (TypeMirror intfType : te.getInterfaces()) {
   352         for (TypeMirror intfType : te.getInterfaces()) {
   356             TypeElement intfc = utils.asTypeElement(intfType);
   353             TypeElement intfc = utils.asTypeElement(intfType);
   386         computeVisibleProperties(lmt);
   383         computeVisibleProperties(lmt);
   387     }
   384     }
   388 
   385 
   389     private void computeLeafMembers(LocalMemberTable lmt, Kind kind) {
   386     private void computeLeafMembers(LocalMemberTable lmt, Kind kind) {
   390         List<Element> list = new ArrayList<>();
   387         List<Element> list = new ArrayList<>();
   391         if (isUndocumentedEnclosure(te)) {
   388         if (utils.isUndocumentedEnclosure(te)) {
   392             list.addAll(lmt.getOrderedMembers(kind));
   389             list.addAll(lmt.getOrderedMembers(kind));
   393         }
   390         }
   394         parents.forEach(pvmt -> {
   391         parents.forEach(pvmt -> {
   395             list.addAll(pvmt.getExtraMembers(kind));
   392             list.addAll(pvmt.getExtraMembers(kind));
   396         });
   393         });
   615             if (elementUtils.overrides(lMethod, inheritedMethod,
   612             if (elementUtils.overrides(lMethod, inheritedMethod,
   616                     utils.getEnclosingTypeElement(lMethod))) {
   613                     utils.getEnclosingTypeElement(lMethod))) {
   617 
   614 
   618                 // Disallow package-private super methods to leak in
   615                 // Disallow package-private super methods to leak in
   619                 TypeElement encl = utils.getEnclosingTypeElement(inheritedMethod);
   616                 TypeElement encl = utils.getEnclosingTypeElement(inheritedMethod);
   620                 if (isUndocumentedEnclosure(encl)) {
   617                 if (utils.isUndocumentedEnclosure(encl)) {
   621                     overriddenMethodTable.computeIfAbsent(lMethod,
   618                     overriddenMethodTable.computeIfAbsent(lMethod,
   622                             l -> new OverridingMethodInfo(inheritedMethod, false));
   619                             l -> new OverridingMethodInfo(inheritedMethod, false));
   623                     return false;
   620                     return false;
   624                 }
   621                 }
   625 
   622