On Mon, 22 Mar 2021 07:52:45 GMT, Tagir F. Valeev <tval...@openjdk.org> wrote:

>> *ejc* issues the same constructor that prefixes a `String` and an `int` 
>> parameter. I agree that the solution is not perfect, but I would prefer it 
>> over the reflection API throwing an `IndexOutOfBoundsException` upon calling 
>> `getAnnotations()`, which nobody really expects upon a getter invocation.
>> 
>> I added a check to see if the enum constructor in question starts with a 
>> `String` and `int` parameter after checking if there are two excess 
>> parameters. I believe that that's at least an improvement over today's state 
>> where it's very unlikely that an enum constructor  yields an incorrect 
>> result in the reflection API whereas the result it is always incorrect 
>> today, given the implementation of both *ejc* and *javac*.
>> 
>> Ideally, this would of course also be fixed by javac (and ejc) such that the 
>> annotations are placed on the correct indices, but I still argue that the 
>> fix is an improvement for being able to properly process enum constructors 
>> for older class files also.
>
> @raphw a duplicate? https://bugs.openjdk.java.net/browse/JDK-8246586

Yes, indeed a duplicate. I linked the issue up against the original.

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

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

Reply via email to