Initial JDK 11 RFR of JDK-8173382: Add -source 11 and -target 11 to javac - Java Bug System & JDK-8193291: Add SourceVersion.RELEASE_11

Joseph D. Darcy joe.darcy at oracle.com
Tue Dec 19 01:49:42 UTC 2017


Thanks Paul.

I'm doing final checks and preparations of fixes to

     JDK-8173382: Add -source 11 and -target 11 to javac
     JDK-8193291: Add SourceVersion.RELEASE_11

and expect to push shortly.

Cheers,

-Joe

On 12/18/2017 5:42 PM, Paul Sandoz wrote:
> Looks good to me.
>
> I am including HS dev for the class file version changes:
>
> http://cr.openjdk.java.net/~psandoz/jdk/JDK-8173382-classfile-version/webrev/ 
> <http://cr.openjdk.java.net/%7Epsandoz/jdk/JDK-8173382-classfile-version/webrev/>
> http://cr.openjdk.java.net/~psandoz/jdk/JDK-8173382-classfile-version-build-changes/webrev/ 
> <http://cr.openjdk.java.net/%7Epsandoz/jdk/JDK-8173382-classfile-version-build-changes/webrev/>
>
> We can push the above patches under the following issue rather that 
> merge into Joe's patch:
>
> https://bugs.openjdk.java.net/browse/JDK-8191913
>
> Hopefully by the next release we can merge together and with less 
> changes required.
>
> Paul.
>
>> On 18 Dec 2017, at 17:33, Joseph D. Darcy <joe.darcy at oracle.com 
>> <mailto:joe.darcy at oracle.com>> wrote:
>>
>> Hello,
>>
>> A follow-up on defining a final field RELEASE_CURRENT  as an alias 
>> for the latest SourceVersion constant to allow easier updating of 
>> annotations using SourceVersion constants. Somewht surprisingly, this 
>> is not legal Java code; an annotation must use an enum constant 
>> directly and not a constant expression which evaluates to an enum 
>> constant.
>>
>> This rules is given in JLS 9.7.1 Normal Annotations:
>>
>>> T [ the element type] is not an array type, and the type of V [the 
>>> element value] is assignment compatible (§5.2) with T, and:
>>>
>>>    If T is a primitive type or String, then V is a constant 
>>> expression (§15.28).
>>>    If T is Class or an invocation of Class (§4.5), then V is a class 
>>> literal (§15.8.2).
>>>    If T is an enum type (§8.9), then V is an enum constant (§8.9.1).
>>>    V is not null.
>> https://docs.oracle.com/javase/specs/jls/se9/html/jls-9.html#jls-9.7.1
>>
>> The wording goes back to JLS 3rd edition which introduced enums and 
>> annotations.
>>
>> Formally, the constant expression concept in JLS 15.28 only applies 
>> to primitive types and Strings. Presumably, it would not be too 
>> difficult to expand this concept to include class literals and enum 
>> constants.
>>
>> In any case, in the mean time the suggested idiom will not work and 
>> the changes of RELEASE_9 => RELEASE_10 will need to stay.
>>
>> Updated webrev with a minor merge:
>>
>>    http://cr.openjdk.java.net/~darcy/8173382.3/
>>
>> Cheers,
>>
>> -Joe
>>
>



More information about the build-dev mailing list