On Thu, 8 Jun 2023 15:47:26 GMT, Pavel Rappo <pra...@openjdk.org> wrote:

>> I admit I can't parse this sentence:
>> 
>>> then the answer is that it's not necessary for keeping the API 
>>> documentation unchanged.
>> 
>> Do you mean that you didn't add `@param e {@inheritDoc BlockingDeque}` here 
>> to keep the documentation unchanged?
>> 
>> You added `@inheritDoc` for `@param` tags in 
>> [FileCacheImageOutputStream.java](https://github.com/openjdk/jdk/pull/14357/files#diff-bc1e47b4c5c405826e7a062cabea04349ef72d5823b67e8616a680dcfcb5d4be)
>>  and others but not here.
>> 
>> So, do we need to add `@param` tags if the entire javadoc is inherited with 
>> `@inheritDoc`?
>
> Copying an individual doc element using `{@inheritDoc}` never adds meta 
> information on the generated HTML page to indicate where that doc element was 
> copied from. It so happens in this particular case that the doc element's 
> contents are the same in both possible supertypes (BlockingDeque and Queue) 
> and look like this:
> 
>     @param e the element to add
> 
> If the end result _on the HTML page_ will look identical no mater if I add 
> `@param e {@inheritDoc BlockingDeque}` or not, I will not add it in _this_ 
> PR. This PR's goal is not restructuring the doc comment; in fact, such 
> restructuring would be an anti-goal. It might be a goal for subsequent, 
> area-specific PRs.
> 
> Above I said that "`{@inheritDoc}` never adds meta information on the 
> generated HTML page". You might have immediately thought about cases where 
> you saw the "Description copied from interface/class" headings. However, 
> those do not come from `{@inheritDoc}`; those come from empty comments (which 
> inherit their content by omission, if you wish). So those headings DO 
> indicate the source of the complete doc comment.
> 
> Now about FileCacheImageOutputStream.java. If I hand't added directed 
> inheritance there, the updated algorithm would've picked a different comment, 
> which wouldn't have been identical to what was picked before:
> 
>  - javax.imageio.stream.ImageInputStream#flushBefore
>     ```
>      * @param pos a {@code long} containing the length of the
>      * stream prefix that may be flushed.
>     ```
> 
>  - javax.imageio.stream.ImageOutputStream#flushBefore:
>     ```
>      * @param pos a {@code long} containing the length of the
>      * stream prefix that may be flushed to the destination.
>     ```
> Hence, the correction. Does it clarify the matter?

Also, for better or worse, a lone `{@inheritDoc}` never inherits "everything" 
from a supertype:

/** {@inheritDoc} */

It merely inherits the main description of a method. Other elements such as 
parameter, exception or return information are inherited individually.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/14357#discussion_r1223241132

Reply via email to