RFR: JEP 359-Records: compiler code

Maurizio Cimadamore maurizio.cimadamore at oracle.com
Wed Oct 30 18:54:57 UTC 2019


I agree with Srikanth here - while I understand that after pars8ing, 
components are just fields, they are still fields with special status 
(e.g. flag), and TypeEnter knows about them, so it should be possible to 
issue the 'right' error message there.

Maurizio

On 30/10/2019 18:07, Vicente Romero wrote:
>>
>> (11) Likewise I was surprised to see 
>> Errors.RecordCantDeclareDuplicateFields being emitted
>> in com.sun.tools.javac.parser.JavacParser#recordDeclaration.
>> I would have expected this to be emitted in 
>> com.sun.tools.javac.comp.Check#checkUnique
>
> right, there are two opposed forces here. The check is in JavacParser 
> because record components exists until JavacParser. From that point 
> on, they are not record components anymore but fields and parameters 
> to a constructor. So if they are repeated then we would be talking to 
> the user about fields and method parameters that he didn't declare he 
> just declared record components. That's why the code is there. I can 
> move it but then the user will probably have spurious error messages.


More information about the compiler-dev mailing list