On 1/10/2020 11:30 AM, Tagir Valeev wrote:
I don't see any changes regarding the variable arity mismatch between
the canonical constructor and record header. See my e-mail [1]. Was
this suggestion rejected or overlooked?

This can be accomplished by adding

 - If the record is a varargs record, the canonical constructor must be a varargs constructor;  - If the record is not a varargs record, the canonical constructor must not be a varargs constructor

(modulo terminology)

to

If a canonical constructor is explicitly declared, then it must additionally satisfy the following conditions; otherwise a compile-time error occurs:

 *

    The names and types of the formal parameters in the formal
    parameter list of the canonical constructor must be identical to
    the names and declared type of the corresponding record component.

 *

    A canonical constructor must not be generic (8.8.4
    <https://docs.oracle.com/javase/specs/jls/se13/html/jls-8.html#jls-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
    
<https://docs.oracle.com/javase/specs/jls/se13/html/jls-8.html#jls-8.8.7.1>).

 *

    All the other rules for a constructor in a normal class
    declaration must be satisfied (8.8
    
<http://cr.openjdk.java.net/~gbierman/jep359/jep359-20200110/specs/records-jls.html#jls-8.8>).


Reply via email to