RFR: 8265684: implement Sealed Classes as a standard feature in Java, javadoc changes

Jonathan Gibbons jjg at openjdk.java.net
Thu Apr 22 21:26:28 UTC 2021


On Thu, 22 Apr 2021 02:21:14 GMT, Vicente Romero <vromero at openjdk.org> wrote:

> Please review the javadoc related changes to make sealed classes a final feature in Java. The patch is mostly removing preview features related code that is not necessary anymore in javadoc.
> 
> TIA

Generally, I think you have have deleted too much.

Although the code will work as you propose, at some point there will be new preview language features, and I think it would be better to leave a skeleton of the code in place, even if the set of preview language features is empty for now.

I think it would be better to limit the deletions to those lines of code that are specific to sealed classes and permits.

src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ClassWriterImpl.java line 87:

> 85:     private static final Set<String> previewModifiers
> 86:             = Set.of("sealed", "non-sealed");
> 87: 

Rather than delete those lines, for future support it might be better just to set previewModifiers to `Collections.emptySet()`

src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ClassWriterImpl.java line 193:

> 191:             }
> 192: 
> 193:             mods.add(modifiersPart);

See previous comment, to leave previewModifiers in place as an empty set

src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlDocletWriter.java line 2242:

> 2240:         Set<TypeElement> reflectivePreviewAPI = new HashSet<>(previewAPITypes.reflectivePreviewAPI);
> 2241:         Set<TypeElement> declaredUsingPreviewFeature = new HashSet<>(previewAPITypes.declaredUsingPreviewFeature);
> 2242:         Set<DeclarationPreviewLanguageFeatures> previewLanguageFeatures = new HashSet<>();

consider not deleting this; just leave it empty

src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlDocletWriter.java line 2261:

> 2259:             if (previewLanguageFeatures.contains(DeclarationPreviewLanguageFeatures.SEALED_PERMITS)) {
> 2260:                 previewLanguageFeatures.remove(DeclarationPreviewLanguageFeatures.SEALED);
> 2261:             }

These lines should go, because they specifically refer to SEALED stuff, but the rest of the block could stay

src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlDocletWriter.java line 2295:

> 2293:                                    featureCodes);
> 2294:     }
> 2295: 

Nothing here seems specific to SEALED, so leave it

src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/Signatures.java line 191:

> 189:                                 classWriter.links.createLink(classWriter.htmlIds.forPreviewSection(typeElement),
> 190:                                                              classWriter.contents.previewMark);
> 191:                         permitsSpan.add(HtmlTree.SUP(link));

OK, yes, this is specific to permits, part of the sealed feature

-------------

PR: https://git.openjdk.java.net/jdk/pull/3613


More information about the javadoc-dev mailing list