As Records has now been approved as JEP 384 [1] I have updated and relocated the spec appropriately:
http://cr.openjdk.java.net/~gbierman/jep384/latest (The old URL now redirects to this one) Thanks, Gavin [1] https://mail.openjdk.java.net/pipermail/amber-dev/2020-May/005964.html > On 1 May 2020, at 18:09, Gavin Bierman <gavin.bier...@oracle.com> wrote: > > I have updated this spec with the new restriction to compact constructors: > > It is a compile-time error if an assignment occurs (16) to a > field corresponding to a record component of the record class > in the body of the compact constructor. > > Latest spec available at: > > > http://cr.openjdk.java.net/~gbierman/records2/20200501/specs/records-jls.html > > Thanks, > Gavin > >> On 28 Apr 2020, at 06:48, Gavin Bierman <gavin.bier...@oracle.com> wrote: >> >> Dear all: >> >> The latest draft of the spec for the second preview of records is available >> at: >> >> http://cr.openjdk.java.net/~gbierman/records2/20200428/specs/records-jls.html >> >> The changes from the first preview spec [1] have been discussed on this list >> and >> are listed below for reference. However, with an eye to a better treatment of >> nesting in Java as discussed by Brian [2] we have taken the opportunity to >> refactor the spec somewhat to allow for a better treatment of local >> declarations >> including local records. >> >> We have kept these refactorings as two separate JLS change documents, linked >> to >> from the records spec. The first document clarifies the usage of terms >> related >> to classes and interfaces, and more clearly distinguishes them from types. >> The >> second builds on this and regularizes the treatment of nested and local >> declarations. In particular, it relaxes previous restrictions and permits >> *local >> interface and enum declarations*. The records spec then builds on top of >> these >> two changes to the JLS to support records (and local record declarations). >> >> Comments welcome! >> Gavin >> >> PS: The URLs will change once we have a JEP number for the second preview of >> records. >> >> [1] >> http://cr.openjdk.java.net/~gbierman/jep359/jep359-20200115/specs/records-jls.html >> [2] >> https://mail.openjdk.java.net/pipermail/amber-spec-experts/2020-January/001904.html >> >> Details: >> >> The changes are the same as those in the first preview of Records in Java SE >> 14, >> except for the following: >> >> - All text now uses the terminology of "Consistent Class and Interface >> Terminology" spec change document >> >> - The handling of local records now builds on the changes in "Local Static >> Interfaces and Enum Classes" spec change document >> >> - Removed unnecessary change to 4.12.4 >> >> - 8.10.1: Removed possibility of `final` modifier for record components >> >> - 8.10.1: Clarified that annotations on a record component only remain on the >> component if its annotation type is applicable in the record component >> context >> >> - 8.10.1: Corrected text around use of `@SafeVarArgs` annotation >> >> - 8.10.4: Removed requirement that canonical constructor must be `public`. >> Any >> access modifier must provide at least as much access as the record class. If >> a >> canonical constructor is implicitly declared, then its access modifier is the >> same as the record class. >> >> - 8.10.4: Added requirement each formal parameter in the formal parameter >> list >> of the constructor must have the same name and type as the corresponding >> record >> component. The formal parameter must be a variable arity parameter if and >> only >> if the corresponding record component is a variable arity record component. >> >> - 8.10.4 Added error condition if a field corresponding to a record >> component of >> a record class is neither DA nor DU in the body of a compact constructor. >> >> - 9.6.4.4 New case for using `@Override` annotation to declare that a method >> is >> an accessor method for a record component. >> >