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
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/compiler-dev/attachments/20171218/6bb31866/attachment-0001.html>
More information about the compiler-dev
mailing list