RFR: JEP 359: Records (Preview) (full code)
Vicente Romero
vicente.romero at oracle.com
Fri Nov 29 23:12:30 UTC 2019
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 amber-dev
mailing list