RFR: JDK-8238838: spurious error message for compact constructors with throws clause

Maurizio Cimadamore maurizio.cimadamore at oracle.com
Thu Feb 13 11:40:51 UTC 2020

Fix looks good. Note that, by using a name instead of a symbol (although 
I agree it has to be that way, at least in the parser) means that you 
will get no name disambiguation support from the rich diagnostic 
formatter. That is - in a case where you have multiple records with same 
name (but in different scopes), the new message will show just the 
record name, while I think using symbols will also add package names to 
disambiguate things. Not that it will be terribly important in this 
particular case.

Another option would be to create a specific parser diagnostic - but I 
don't think we need to go that far.


On 13/02/2020 04:43, Vicente Romero wrote:
> ping
> On 2/11/20 3:35 PM, Vicente Romero wrote:
>> Hi,
>> Please review the fix for [1] at [2]. The fix is oriented at showing 
>> a friendlier error message in case a throws clause is declared in a 
>> compact constructor. We already issue an error for this case for 
>> canonical constructors so the same support could be expected for 
>> compact ones. I had to modify the arguments for a generic error 
>> message used for compact and canonical constructors as the error for 
>> canonical constructors is shown in Attr while the error for compact 
>> is shown in the parser. This is because the syntax for compact 
>> constructors doesn't expect anything between the constructor's name 
>> and its body. As at parser time there are no symbols in the ASTs I 
>> changed a parameter for the generic error message from `symbol` to 
>> `name`. This change has provoked that other error logging related to 
>> constructors had to be changed.
>> Thanks,
>> Vicente
>> [1] https://bugs.openjdk.java.net/browse/JDK-8238838
>> [2] http://cr.openjdk.java.net/~vromero/8238838/webrev.00/

More information about the compiler-dev mailing list