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

Vicente Romero vicente.romero at oracle.com
Mon Dec 2 21:07:39 UTC 2019


thanks Joe,

Vicente

On 12/2/19 1:17 AM, Joe Darcy wrote:
> 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