RFR: JEP 359: Records (Preview) (full code)

Joe Darcy joe.darcy at oracle.com
Mon Dec 2 06:17:06 UTC 2019


Hi Vicente,

I took the liberty of adding the necessary directory-level jtreg config 
files to enable the feature and updated the tests accordingly:

     https://hg.openjdk.java.net/amber/amber/rev/c91826d62310

(The feature is enabled by default in for the langtools tests, but 
disabled by default elsewhere.)

HTH,

-Joe

On 11/29/2019 3:12 PM, Vicente Romero wrote:
> Hi Joe,
>
> All the tests that have an explicit -source 14 are that way because 
> of, I think to remember, a bug in jtreg that doesn't expand the 
> ${some.property} macro for those tests. I don't remember the details 
> though
>
> Thanks,
> Vicente
>
> On 11/29/19 9:59 AM, Joe Darcy wrote:
>> Hi Vicente,
>>
>> Please change all uses of
>>
>>     @compile --enable-preview -source 14
>>
>> in jtreg tags to to
>>
>>     @compile --enable-preview -source ${jdk.version}
>>
>> The former structure will spuriously fail when the JDK 14 -> 15 
>> transition occurs.
>>
>> Also, publishing delta-webrevs between iterations in additional to 
>> full webrev would help track the incremental changes.
>>
>> Thanks,
>>
>> -Joe
>>
>> On 11/28/2019 8:05 AM, Vicente Romero wrote:
>>> Hi again,
>>>
>>> Sorry but I realized that I forgot to remove some code on the 
>>> compiler side. The code removed is small, before we were issuing an 
>>> error if some serialization methods were declared as record members. 
>>> That section was removed from the spec. I have prepared another 
>>> iteration with this change at [1]
>>>
>>> Thanks,
>>> Vicente
>>>
>>> [1] 
>>> http://cr.openjdk.java.net/~vromero/records.review/all_code/webrev.01/
>>>
>>> On 11/27/19 11:37 PM, Vicente Romero wrote:
>>>> Hi,
>>>>
>>>> Please review the code for the records feature at [1]. This webrev 
>>>> includes all: APIs, runtime, compiler, serialization, javadoc, and 
>>>> more! Must of the code has been reviewed but there have been some 
>>>> changes since reviewers saw it. Also this is the first time an 
>>>> integral webrev is sent out for review. Last changes on top of my 
>>>> mind since last review iterations:
>>>>
>>>> On the compiler implementation:
>>>> - it has been adapted to the last version of the language spec [2], 
>>>> as a reference the JVM spec is at [3]. This implied some changes in 
>>>> determining if a user defined constructor is the canonical or not. 
>>>> Now if a constructor is override-equivalent to a signature derived 
>>>> from the record components, then it is considered the canonical 
>>>> constructor. And any canonical constructor should satisfy a set of 
>>>> restrictions, see section 8.10.4 Record Constructor Declarations of 
>>>> the specification.
>>>> - It was also added a check to make sure that accessors are not 
>>>> generic.
>>>> - And that the canonical constructor, if user defined, is not 
>>>> explicitly invoking any other constructor.
>>>> - The list of forbidden record component names has also been updated.
>>>> - new error messages have been added
>>>>
>>>> APIs:
>>>> - there have been some API editing in java.lang.Record, 
>>>> java.lang.runtime.ObjectMethods and 
>>>> java.lang.reflect.RecordComponent, java.io.ObjectInputStream, 
>>>> javax.lang.model (some visitors were added)
>>>>
>>>> On the JVM implementation:
>>>> - some logging capabilities have been added to classFileParser.cpp 
>>>> to provide the reason for which the Record attribute has been ignored
>>>>
>>>> Reflection:
>>>> - there are several new changes to the implementation of 
>>>> java.lang.reflect.RecordComponent apart from the spec changes 
>>>> mentioned before.
>>>>
>>>> bug fixes in
>>>> - compiler
>>>> - serialization,
>>>> - JVM, etc
>>>>
>>>> As a reference the last iteration of the previous reviews can be 
>>>> found at [4] under folders: compiler, hotspot_runtime, javadoc, 
>>>> reflection and serialization,
>>>>
>>>> TIA,
>>>> Vicente
>>>>
>>>> [1] 
>>>> http://cr.openjdk.java.net/~vromero/records.review/all_code/webrev.00/
>>>> [2] 
>>>> http://cr.openjdk.java.net/~gbierman/jep359/jep359-20191125/specs/records-jls.html
>>>> [3] 
>>>> http://cr.openjdk.java.net/~gbierman/jep359/jep359-20191125/specs/records-jvms.html
>>>> [4] http://cr.openjdk.java.net/~vromero/records.review/
>>>>
>>>
>


More information about the compiler-dev mailing list