[359] Record - Compact Constructor should not have throws clause
Vicente Romero
vicente.romero at oracle.com
Fri Feb 14 13:38:40 UTC 2020
right, the issue has been fixed,
thanks again for the report,
Vicente
On 2/12/20 11:18 PM, Manoj Palat wrote:
> Sure. I see JDK-8238838 filed.
> Thanks,
> Manoj
>
> ----- Original message -----
> From: Vicente Romero <vicente.romero at oracle.com>
> To: Tagir Valeev <amaembo at gmail.com>, Manoj Palat
> <manoj.palat at in.ibm.com>
> Cc: amber-spec-experts <amber-spec-experts at openjdk.java.net>
> Subject: [EXTERNAL] Re: [359] Record - Compact Constructor should
> not have throws clause
> Date: Tue, Feb 11, 2020 9:47 AM
>
> On the spec side I agree with Tagir. On the compiler error
> messages I will file an issue to check if we can generate a better
> error message,
>
> Thanks,
> Vicente
> On 2/10/20 10:23 PM, Tagir Valeev wrote:
>> Hello!
>> вт, 11 февр. 2020 г., 10:18 Manoj Palat <manoj.palat at in.ibm.com
>> <mailto:manoj.palat at in.ibm.com>>:
>>
>> Hi,
>>
>> consider
>> record R(){
>> public R throws Exception {}
>> }
>>
>> From JLS 14 Sec 8.10.4,
>> A canonical constructor must not have a throws clause.
>>
>> Sec 8.10.5 says
>> A compact constructor is a canonical constructor.
>>
>> By the above two, it can be inferred that a compact
>> constructor must not have a throws clause. However, there is
>> no explicit mention of this restriction in Sec 8.10.5 [1]
>>
>> I think it would good to add this explicitly in the next
>> version of spec (assuming the above is true).
>>
>> This unambiguously follows from the compact constructor
>> declaration production:
>>
>> /CompactConstructorDeclaration/:
>> { /Annotation/ } { /ConstructorModifier/ } /SimpleTypeName/
>> /ConstructorBody/
>>
>> No throws at all here. To me, this is enough and no changes are
>> necessary.
>> With best regards,
>> Tagir Valeev.
>>
>> [1]
>> http://cr.openjdk.java.net/~gbierman/jep359/jep359-20200115/specs/records-jls.html#jls-8.10.5
>> Regards,
>> Manoj.
>>
>> Side Note:
>> To compare, javac throws errors but not this particular error
>> (may be due to error recovery)
>> javac14 --enable-preview --release 14 X.java
>> X.java:2: error: <identifier> expected
>> public R throws Exception {}
>> ^
>> X.java:2: error: field declaration must be static
>> public R throws Exception {}
>> ^
>> (consider replacing field with record component)
>> X.java:2: error: invalid method declaration; return type required
>> public R throws Exception {}
>>
>
More information about the amber-spec-observers
mailing list