RFR: JEP 359: Records (Preview) (full code)
Joe Darcy
joe.darcy at oracle.com
Fri Nov 29 14:59:00 UTC 2019
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