This is reasonable and probably easy to spec: when we define the canonical 
ctor, in addition to defining its is defined to have no type parameters.  Since 
the compact ctor is shorthand for a full canonical ctor, no additional spec is 
needed for that.  

Sent from my iPad

> On Nov 9, 2019, at 12:07 PM, Tagir Valeev <amae...@gmail.com> wrote:
> 
> Hello!
> 
> Reading the latest JLS spec draft for records, chapter 8.10.5 [1] I
> see the following:
> 
> A compact constructor declaration provides an alternative, succinct
> means to declare a canonical constructor for a record type.
> CompactConstructorDeclaration:{ Annotation } { ConstructorModifier } [
> TypeParameters ] SimpleTypeName ConstructorBody
> 
> Is it really useful to allow type parameters specification for a
> compact constructor, given that we cannot alter the formal parameters
> list, thus we cannot use them there? Yes, we could use them to declare
> local variables but this is an implementation detail, thus it should
> not leak to the clients (especially given the fact that canonical
> constructors are always public). Should not we exclude type parameters
> from the compact constructor declaration?
> 
> I think we can go even further and disable type parameters for
> explicit canonical constructor declaration (not in compact form) as
> well. WDYT?
> 
> With best regards,
> Tagir Valeev.
> 
> [1] 
> http://cr.openjdk.java.net/~gbierman/jep359/jep359-20191031/specs/records-jls.html#jls-8.10.5

Reply via email to