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