Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8287379

Using @inheritDoc in an inapplicable context shouldn't crash javadoc

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • P3
    • 19
    • 19
    • tools
    • None

    Backports

      Description

        1. Although it is unspecified and shouldn't work, it shouldn't crash either:

        /** @param <T> {@inheritDoc} */
        public class A<T> { }

        $ ./build/macosx-x64/images/jdk/bin/javadoc A.java
        Loading source file A.java...
        Constructing Javadoc information...
        Building index for all the packages and classes...
        Standard Doclet version 19-internal-2022-05-25-2010101.pavelrappo...
        Building tree for all the packages and classes...
        A.java:1: warning: no main description
        /** @param <T> {@inheritDoc} */
            ^
        Generating ./A.html...
        error: An internal exception has occurred.
           (java.lang.ClassCastException: class com.sun.tools.javac.code.Symbol$ClassSymbol cannot be cast to class javax.lang.model.element.ExecutableElement (com.sun.tools.javac.code.Symbol$ClassSymbol is in module jdk.compiler of loader 'app'; javax.lang.model.element.ExecutableElement is in module java.compiler of loader 'platform'))
        Please file a bug against the javadoc tool via the Java bug reporting page
        (http://bugreport.java.com) after checking the Bug Database (http://bugs.java.com)
        for duplicates. Include error messages and the following diagnostic in your report. Thank you.
        java.lang.ClassCastException: class com.sun.tools.javac.code.Symbol$ClassSymbol cannot be cast to class javax.lang.model.element.ExecutableElement (com.sun.tools.javac.code.Symbol$ClassSymbol is in module jdk.compiler of loader 'app'; javax.lang.model.element.ExecutableElement is in module java.compiler of loader 'platform')
        at jdk.javadoc/jdk.javadoc.internal.doclets.toolkit.taglets.ParamTaglet.inherit(ParamTaglet.java:92)
        at jdk.javadoc/jdk.javadoc.internal.doclets.toolkit.util.DocFinder.search(DocFinder.java:230)
        at jdk.javadoc/jdk.javadoc.internal.doclets.toolkit.util.DocFinder.search(DocFinder.java:266)
        at jdk.javadoc/jdk.javadoc.internal.doclets.toolkit.taglets.InheritDocTaglet.retrieveInheritedDocumentation(InheritDocTaglet.java:92)
        at jdk.javadoc/jdk.javadoc.internal.doclets.toolkit.taglets.InheritDocTaglet.getInlineTagOutput(InheritDocTaglet.java:118)
        at jdk.javadoc/jdk.javadoc.internal.doclets.toolkit.taglets.TagletWriter.getInlineTagOutput(TagletWriter.java:346)
        at jdk.javadoc/jdk.javadoc.internal.doclets.formats.html.HtmlDocletWriter.getInlineTagOutput(HtmlDocletWriter.java:371)
        at jdk.javadoc/jdk.javadoc.internal.doclets.formats.html.HtmlDocletWriter$2.visitInheritDoc(HtmlDocletWriter.java:1616)
        at jdk.javadoc/jdk.javadoc.internal.doclets.formats.html.HtmlDocletWriter$2.visitInheritDoc(HtmlDocletWriter.java:1499)
        at jdk.compiler/com.sun.tools.javac.tree.DCTree$DCInheritDoc.accept(DCTree.java:724)
        at jdk.compiler/com.sun.source.util.SimpleDocTreeVisitor.visit(SimpleDocTreeVisitor.java:79)
        at jdk.javadoc/jdk.javadoc.internal.doclets.formats.html.HtmlDocletWriter.commentTagsToContent(HtmlDocletWriter.java:1729)
        at jdk.javadoc/jdk.javadoc.internal.doclets.formats.html.TagletWriterImpl.paramTagOutput(TagletWriterImpl.java:302)
        at jdk.javadoc/jdk.javadoc.internal.doclets.toolkit.taglets.ParamTaglet.processParamTag(ParamTaglet.java:291)
        at jdk.javadoc/jdk.javadoc.internal.doclets.toolkit.taglets.ParamTaglet.processParamTags(ParamTaglet.java:248)
        at jdk.javadoc/jdk.javadoc.internal.doclets.toolkit.taglets.ParamTaglet.getTagletOutput(ParamTaglet.java:166)
        at jdk.javadoc/jdk.javadoc.internal.doclets.toolkit.taglets.ParamTaglet.getAllBlockTagOutput(ParamTaglet.java:141)
        at jdk.javadoc/jdk.javadoc.internal.doclets.formats.html.ClassWriterImpl.addParamInfo(ClassWriterImpl.java:272)
        at jdk.javadoc/jdk.javadoc.internal.doclets.toolkit.builders.ClassBuilder.buildParamInfo(ClassBuilder.java:169)
        at jdk.javadoc/jdk.javadoc.internal.doclets.toolkit.builders.ClassBuilder.buildClassInfo(ClassBuilder.java:147)
        at jdk.javadoc/jdk.javadoc.internal.doclets.toolkit.builders.ClassBuilder.buildClassDoc(ClassBuilder.java:120)
        at jdk.javadoc/jdk.javadoc.internal.doclets.toolkit.builders.ClassBuilder.build(ClassBuilder.java:98)
        at jdk.javadoc/jdk.javadoc.internal.doclets.formats.html.HtmlDoclet.generateClassFiles(HtmlDoclet.java:378)
        at jdk.javadoc/jdk.javadoc.internal.doclets.toolkit.AbstractDoclet.generateClassFiles(AbstractDoclet.java:281)
        at jdk.javadoc/jdk.javadoc.internal.doclets.formats.html.HtmlDoclet.generateClassFiles(HtmlDoclet.java:192)
        at jdk.javadoc/jdk.javadoc.internal.doclets.toolkit.AbstractDoclet.startGeneration(AbstractDoclet.java:207)
        at jdk.javadoc/jdk.javadoc.internal.doclets.toolkit.AbstractDoclet.run(AbstractDoclet.java:110)
        at jdk.javadoc/jdk.javadoc.doclet.StandardDoclet.run(StandardDoclet.java:103)
        at jdk.javadoc/jdk.javadoc.internal.tool.Start.parseAndExecute(Start.java:574)
        at jdk.javadoc/jdk.javadoc.internal.tool.Start.begin(Start.java:397)
        at jdk.javadoc/jdk.javadoc.internal.tool.Start.begin(Start.java:346)
        at jdk.javadoc/jdk.javadoc.internal.tool.Main.execute(Main.java:57)
        at jdk.javadoc/jdk.javadoc.internal.tool.Main.main(Main.java:46)
        1 error
        1 warning

        2. This is a nonsensical use case, but again, it shouldn't crash:

        % cat p/doc-files/doc.html
        <HTML lang="EN">
        <HEAD>
            <TITLE>EXAMPLE</TITLE>
        </HEAD>
        <BODY>
        {@inheritDoc}
        </BODY>
        </HTML>

        Generating /tmp/whatever/p/doc-files/doc.html...
        ./p/doc-files/doc.html:6: warning: Tag @inheritDoc cannot be used in overview documentation. It can only be used in the following types of documentation: method.
        {@inheritDoc}
        ^
        error: An internal exception has occurred.
           (javax.lang.model.element.UnknownElementException: Unknown element: "jdk.javadoc.internal.doclets.toolkit.DocFileElement@5b247367")
        Please file a bug against the javadoc tool via the Java bug reporting page
        (http://bugreport.java.com) after checking the Bug Database (http://bugs.java.com)
        for duplicates. Include error messages and the following diagnostic in your report. Thank you.
        javax.lang.model.element.UnknownElementException: Unknown element: "jdk.javadoc.internal.doclets.toolkit.DocFileElement@5b247367"
        at java.compiler/javax.lang.model.util.AbstractElementVisitor6.visitUnknown(AbstractElementVisitor6.java:125)
        at jdk.javadoc/jdk.javadoc.internal.doclets.toolkit.DocletElement.accept(DocletElement.java:85)
        at java.compiler/javax.lang.model.util.AbstractElementVisitor6.visit(AbstractElementVisitor6.java:106)
        at jdk.javadoc/jdk.javadoc.internal.doclets.toolkit.util.Utils.getSimpleName0(Utils.java:2003)
        at java.base/java.util.HashMap.computeIfAbsent(HashMap.java:1228)
        at jdk.javadoc/jdk.javadoc.internal.doclets.toolkit.util.Utils.getSimpleName(Utils.java:1964)
        at jdk.javadoc/jdk.javadoc.internal.doclets.toolkit.taglets.InheritDocTaglet.retrieveInheritedDocumentation(InheritDocTaglet.java:96)
        at jdk.javadoc/jdk.javadoc.internal.doclets.toolkit.taglets.InheritDocTaglet.getInlineTagOutput(InheritDocTaglet.java:107)
        at jdk.javadoc/jdk.javadoc.internal.doclets.toolkit.taglets.TagletWriter.getInlineTagOutput(TagletWriter.java:346)
        at jdk.javadoc/jdk.javadoc.internal.doclets.formats.html.HtmlDocletWriter.getInlineTagOutput(HtmlDocletWriter.java:371)
        at jdk.javadoc/jdk.javadoc.internal.doclets.formats.html.HtmlDocletWriter$2.visitInheritDoc(HtmlDocletWriter.java:1622)
        at jdk.javadoc/jdk.javadoc.internal.doclets.formats.html.HtmlDocletWriter$2.visitInheritDoc(HtmlDocletWriter.java:1503)
        at jdk.compiler/com.sun.tools.javac.tree.DCTree$DCInheritDoc.accept(DCTree.java:724)
        at jdk.compiler/com.sun.source.util.SimpleDocTreeVisitor.visit(SimpleDocTreeVisitor.java:79)
        at jdk.javadoc/jdk.javadoc.internal.doclets.formats.html.HtmlDocletWriter.commentTagsToContent(HtmlDocletWriter.java:1735)
        at jdk.javadoc/jdk.javadoc.internal.doclets.formats.html.HtmlDocletWriter.commentTagsToContent(HtmlDocletWriter.java:1449)
        at jdk.javadoc/jdk.javadoc.internal.doclets.formats.html.HtmlDocletWriter.commentTagsToContent(HtmlDocletWriter.java:1430)
        at jdk.javadoc/jdk.javadoc.internal.doclets.formats.html.DocFilesHandlerImpl.handleHtmlFile(DocFilesHandlerImpl.java:202)
        at jdk.javadoc/jdk.javadoc.internal.doclets.formats.html.DocFilesHandlerImpl.copyDirectory(DocFilesHandlerImpl.java:158)
        at jdk.javadoc/jdk.javadoc.internal.doclets.formats.html.DocFilesHandlerImpl.copyDocFiles(DocFilesHandlerImpl.java:118)
        at jdk.javadoc/jdk.javadoc.internal.doclets.toolkit.builders.PackageSummaryBuilder.buildPackageDoc(PackageSummaryBuilder.java:111)
        at jdk.javadoc/jdk.javadoc.internal.doclets.toolkit.builders.PackageSummaryBuilder.build(PackageSummaryBuilder.java:93)
        at jdk.javadoc/jdk.javadoc.internal.doclets.formats.html.HtmlDoclet.generatePackageFiles(HtmlDoclet.java:406)
        at jdk.javadoc/jdk.javadoc.internal.doclets.toolkit.AbstractDoclet.startGeneration(AbstractDoclet.java:210)
        at jdk.javadoc/jdk.javadoc.internal.doclets.toolkit.AbstractDoclet.run(AbstractDoclet.java:110)
        at jdk.javadoc/jdk.javadoc.doclet.StandardDoclet.run(StandardDoclet.java:103)
        at jdk.javadoc/jdk.javadoc.internal.tool.Start.parseAndExecute(Start.java:574)
        at jdk.javadoc/jdk.javadoc.internal.tool.Start.begin(Start.java:397)
        at jdk.javadoc/jdk.javadoc.internal.tool.Start.begin(Start.java:346)
        at jdk.javadoc/jdk.javadoc.internal.tool.Main.execute(Main.java:57)
        at jdk.javadoc/jdk.javadoc.internal.tool.Main.main(Main.java:46)
        1 error
        3 warnings

        Attachments

          Issue Links

            Activity

              People

                prappo Pavel Rappo
                prappo Pavel Rappo
                Votes:
                0 Vote for this issue
                Watchers:
                3 Start watching this issue

                Dates

                  Created:
                  Updated:
                  Resolved: