On Wed, 19 Apr 2023 10:29:48 GMT, Pavel Rappo <pra...@openjdk.org> wrote:

>> src/java.base/share/classes/java/util/concurrent/CopyOnWriteArrayList.java 
>> line 409:
>> 
>>> 407:      * {@inheritDoc}
>>> 408:      */
>>> 409:     public E getFirst() {
>> 
>> Javadoc will automatically copy the specification from the overridden 
>> method, so the javadoc block is not necessary and can be replaced by an 
>> `@Override` to indicate inheritance.
>
>> Javadoc will automatically copy the specification from the overridden 
>> method, so the javadoc block is not necessary and can be replaced by an 
>> `@Override` to indicate inheritance.
> 
> I guess, this PR has converged enough for us to discuss some trivial stuff; 
> so here it goes.
> 
> While you are right when saying that a doc comment consisting of a lone 
> `{@inheritDoc}` is -- and I'm paraphrasing here -- the same as no comment at 
> all, such a comment effectively is a copy of the overridden method _main 
> description_, which is the part of a doc comment from its beginning to the 
> first block tag or the end of the comment (if the comment has no block tags).
> 
> Parameters, return value and exception information -- all those are copied 
> because they are mentioned in the method declaration. While this might give 
> an impression that it's the result of `{@inheritDoc}`, it is important to 
> understand that it isn't. For example, since runtime exceptions and errors 
> aren't required to be mentioned in the `throws` clause of a method 
> declaration, no `@throws` tags corresponding to such throwables will be 
> copied automatically; the doc comment has to explicitly inherit those. In our 
> case, either would do:
> 
>     /**
>      * @throws NoSuchElementException {@inheritDoc}
>      */
>     public E getFirst() {
> 
>     /**
>      * {@inheritDoc}
>      * @throws NoSuchElementException {@inheritDoc}
>      */
>     public E getFirst() {
> 
> Speaking of which: @stuart-marks, do you think you could add those everywhere?

@pavelrappo Arrrrggh.

> I guess, this PR has converged enough for us to discuss some trivial stuff; 
> so here it goes.

All this "trivial" stuff is generating a lot of work! :-) Well, no big deal, 
Joe D still has more CSR comments coming.

I didn't know about the need to specify `@throws` in order to generate the 
throws-clauses in the docs. Ah, well, turns out it wasn't THAT bad to run 
through the hierarchy and check all the inherited methods. Done.

As an aside, I note that some methods such as ArrayList.addFirst/addLast had 
this javadoc:

    /**
     * @inheritDoc
     */

It didn't appear at all in the javadoc output, I guess because of 
`--override-methods=summary`. Not surprising in isolation, but it seemed 
strange because the getX and removeX methods were in the detail section but the 
addX methods seemed "missing". Is there a way to inherit the doc from a 
superclass but force a particular method to have its details included? It's 
kind of moot because these are also missing a `@since` tag, and adding that did 
cause the method detail to be included. Seems like the summary/detail stuff 
still needs some things to be worked out.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/7387#discussion_r1172062252

Reply via email to