JDK 12 RFR of JDK-8206085 : Refactor langtools/tools/javac/versions/Versions.java

joe darcy joe.darcy at oracle.com
Mon Jul 2 23:38:27 UTC 2018

Hi Peter,

On 7/2/2018 7:36 AM, Peter Levart wrote:
> Hi Joe,
> A suggestion for more compact code: the (ever growing) switch 
> statement in enum SourceTarget.checksrc could be replaced with a field 
> of type BiConsumer<Versions, String[]>, initialized in constructor. 
> For each enum constant you then just pass a method reference to the 
> chosen target method. The checksrc in SourceTarget could be an 
> instance method.

I had an intermediate version along those lines before sending the first 
one out for review. In the intermediate version, I stored in the method 
reference in a field and the enum client code used an accessor method 
for it code. The downside was a bit unpleasent to use since the 
vararg-ness isn't captured in the generic type. But if checksrc was a 
varags instance on the enum, then it could benefit from the varargs 
conversion. Let's see ... yes, the resulting test looks better and 
should be easier to maintain:


Thank you for the suggestion.

In any case, the span of versions should reduced soon by the removal of 
-source/-target/--release 6 in JDK 12 [1], which is one reason I'm 
working on refactoring these tests now :-)



[1] http://mail.openjdk.java.net/pipermail/jdk-dev/2018-May/001210.html

> Peter
> On 06/29/2018 09:41 PM, joe darcy wrote:
>> Dis-charged revision along with JDK 11 specific source example now up at
>> http://cr.openjdk.java.net/~darcy/8206085.1/
>> Thanks,
>> -Joe
>> On 6/29/2018 9:55 AM, Jonathan Gibbons wrote:
>>> There's more static in this file than on my high-school Van de Graaf 
>>> generator!
>>> Can we follow the convention of creating an instance in main, and 
>>> then using instance methods.
>>> The naming of some methods is also novel, with respect to 
>>> case-conventions.
>>> -- Jon
>>> On 6/28/18 8:15 PM, joe darcy wrote:
>>>> Hello,
>>>> Fresh off of updating
>>>>     langtools/tools/javac/versions/Versions.java
>>>> for the JDK 11 -> 12 transition, I'd like to refactor the test to 
>>>> reduce the maintenance needed when adding new versions (as in new 
>>>> releases) or removing versions (as is planned for later in JDK 12):
>>>> http://cr.openjdk.java.net/~darcy/8206085.0/
>>>> Thanks,
>>>> -Joe

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/compiler-dev/attachments/20180702/293d933a/attachment.html>

More information about the compiler-dev mailing list