RFR: 8332103: since-checker - Add missing @ since` tags to java.desktop [v2]

Nizar Benalla nbenalla at openjdk.org
Tue Jun 4 00:05:02 UTC 2024


On Mon, 3 Jun 2024 20:02:12 GMT, Sergey Bylokhov <serb at openjdk.org> wrote:

>>> Hmm, the _explicit_ default constructor was added in JDK 16, but it was implicit before then. So I am not 100% sure what the right answer is - the same as the class, or when it was explicitly added.
>> 
>> I believe there was no default constructor in `BasicSliderUI()` because there was a constructor with a parameter `BasicSliderUI(JSlider b)`.
>> 
>> Thus, this case seem to be correct `BasicSliderUI()` is available since 16.
>> 
>> At the same time, `BasicSliderUI(JSlider b)` has existed since at least 7, the constructor is present in the history of the file. The history in GitHub goes up to 1st December 2007 which corresponds to Java 7 timeline. I'm pretty sure this constructor existed in previous releases, and you have to dig further to find when it was added.
>> 
>> Very much likely, the constructor `BasicSliderUI(JSlider b)` was added when the `BasicSliderUI` class was added. The class does not have `@since` tag, so it's inherited from the package, isn't it? The same rule applies to the constructor, doesn't it?
>
> It seems that BasicSliderUI() was added by the mistake? it was not mentioned in the bug report...Seems it is too late to delete it?

I'm sorry but `method: void javax.swing.plaf.basic.BasicSliderUI.<init>()` refers to the constructor, 
 as I use [this method](https://docs.oracle.com/en/java/javase/22/docs/api/java.compiler/javax/lang/model/element/ExecutableElement.html#getSimpleName()) to get a method's name.

I am saying that there was no default constructor before JDK 16 as it doesn't appear in the compiler's historical data until then and therefore warrants an `@since`

I am stealing my colleagues words but here is the general rule for when we want to add an `@since` until we publish a doc with rules for `@since`

> As a practical rule for deciding whether any declaration is new or not, imagine writing a test program that refers to the most specific form of the declaration. If that test program does not compile on JDK version N-1 and does compile on version N, then it warrants having `@since N`. Put another way, `@since N` should identify the first release in which the declaration can be used in the given form

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

PR Review Comment: https://git.openjdk.org/jdk/pull/19192#discussion_r1625176050


More information about the client-libs-dev mailing list