Hello! Record construction section now sounds good to me, thanks!
With best regards, Tagir Valeev. On Tue, Nov 26, 2019 at 6:24 AM Gavin Bierman <gavin.bier...@oracle.com> wrote: > > A further updated draft language spec for JEP 359 (Records) is available at: > > http://cr.openjdk.java.net/~gbierman/jep359/jep359-20191125/specs/records-jls.html > > along with an updated JVMS spec: > > http://cr.openjdk.java.net/~gbierman/jep359/jep359-20191125/specs/records-jvms.html > > (Thanks to Maurizio, Alex, Tagir and others for feedback.) > > Main change is around the definition of canonical constructor and accessor > methods. The text has changed quite a bit, but this is mainly at the surface. > Hopefully this new definition is easier to understand than before and removes > some corner cases (most of which were of the “which error should arise from > this program?”). > > The idea for canonical constructors is as follows (it’s very similar for > accessor methods): You are a constructor. If your signature is > override-equivalent to the constructor signature derived from the record > declaration in the obvious way, then you are considered a canonical > constructor. (This also means that there can’t be more than one canonical > constructor.) In addition, as you have been identified as a canonical > constructor, you must satisfy some additional requirements, otherwise there > is a compile-time error. These are: > > The types of the formal parameters in the formal parameter list of the > canonical constructor must be identical to the declared type of the > corresponding record component. > A canonical constructor must not be generic (8.8.4). > A canonical constructor must be declared public. > A canonical constructor must not have a throws clause. > The body of a canonical constructor must not contain an explicit constructor > invocation statement (8.8.7.1). > All the other rules for a constructor in a normal class declaration must be > satisfied (8.8). > > We could relax some of these rules - I know Remi would like to change the > third one :-) The first one is another candidate. I propose that we try these > ones out in the preview, and during the preview period you can send us your > experience kicking the tires with these. [One reason for this refactoring is > that should we decide to relax some of these restrictions, it is a relatively > simple change to the spec, which will make our lives easier for subsequent > JDKs.] > > Many thanks, > Gavin > > > > On 21 Nov 2019, at 15:01, Gavin Bierman <gavin.bier...@oracle.com> wrote: > > A hopefully final draft language spec for JEP 359 (Records) is available at: > > http://cr.openjdk.java.net/~gbierman/jep359/jep359-20191121/specs/records-jls.html > > This incorporates (I hope!) all the very helpful suggestions from everyone on > these lists - many thanks. > > As always - any further comments/thoughts/bugs most welcome! > > Gavin > > On 31 Oct 2019, at 14:17, Gavin Bierman <gavin.bier...@oracle.com> wrote: > > An updated draft language spec for JEP 359 (Records) is available at: > > http://cr.openjdk.java.net/~gbierman/jep359/jep359-20191031/specs/records-jls.html > > (Alongside is a draft JVM spec for this feature: > > http://cr.openjdk.java.net/~gbierman/jep359/jep359-20191031/specs/records-jvms.html > > ) > > As always, please email me any comments/thoughts/bugs. > > Thanks, > Gavin > > > On 23 Aug 2019, at 22:25, Gavin Bierman <gavin.bier...@oracle.com> wrote: > > A draft language spec for records is available at: > > http://cr.openjdk.java.net/~gbierman/8222777/8222777-20190823/specs/records-jls.html > > This spec doesn’t yet discuss varargs records - to appear in the next draft. > > All comments welcomed! > > Thanks, > Gavin > > > >