RFR: JDK-8234445: spurious error message for record constructors with receiver parameters

Vicente Romero vicente.romero at oracle.com
Wed Dec 18 18:24:59 UTC 2019


Please review the fix for [1] at [2]. What happens here is that 
basically for records we are altering the order in which members are 
entered, this is because the compiler needs to check if a user provided 
constructor has the same erasure as the canonical constructor or not and 
depending on this generate one or not, or even issue an error. The only 
way to have access to this information is to enter all the constructors 
before the compiler gets to the point where it needs to decide if a 
canonical should be generated or not. The current implementation 
'forgot' to add `this` and `super` to the scope before entering all the 
constructors. This is the reason for the spurious error message: because 
`this` was not entered before the user defined constructors were entered 
by the compiler

Thanks,
Vicente

[1] https://bugs.openjdk.java.net/browse/JDK-8234445
[2] http://cr.openjdk.java.net/~vromero/8234445/webrev.00/


More information about the compiler-dev mailing list