On Thu, 18 Mar 2021 21:03:20 GMT, Rafael Winterhalter 
<winterhal...@openjdk.org> wrote:

> 8263763: The constructor of an enumeration prefixes with two synthetic 
> arguments for constant name and ordinal index. For this reason, the 
> constructor annotations need to be shifted two indices to the right, such 
> that the annotation indices match with the parameter indices.

A general comment, the enum constructor situation is a bit tricky as

1) There is no 100% reliable way to determine which of a enum constructor's 
args are synthetic.

2) How a Java compiler generates enum constructors is a compiler-internal 
contract since all the enum constructors must be private.

It is true that javac has consistently added two extra parameters as an 
implementation detail. Offhand, I don't know if ecj in particular has made the 
same choice. javac is not obliged to continue implementing enum constructors in 
this manner, so for better robustness, I think a fix in this space needs to be 
able to accommodate situations other than exactly N+2 parameters.

-------------

PR: https://git.openjdk.java.net/jdk/pull/3082

Reply via email to