Bug: Compact record constructor is missing generic type info on parameters
Patrick Doyle
p.r.doyle at gmail.com
Wed Apr 24 10:53:52 UTC 2024
Thanks, Liam. Perhaps Java 22 doesn't use the "mandated" flag anymore?
Oracle has closed by bug as "not a bug":
https://bugs.java.com/bugdatabase/view_bug?bug_id=JDK-8331026
> The observations on Windows 11:
> JDK 22: Passed all tests.
> Close as not an issue.
Given that Gradle doesn't support Java 22 yet, this is a bit tricky for me
to try at the moment. I know when I build it with Java 21 and then run it
with 22, it still fails, but based on the observations from Oracle, I
assume it would pass if I compiled the class with Java 22.
Question: would it make sense to back-port the fix from Java 22 to the LTS
versions (17 and 21)? If so, who do I contact about that?
Thanks again,
--
Patrick Doyle
p.r.doyle at gmail.com
On Tue, Apr 23, 2024 at 3:51 PM Liam Miller-Cushon <cushon at google.com>
wrote:
> The only noteworthy difference in the class file for the record with the
> compact constructor is that the parameter has the 'mandated' flag set.
>
> I think the behaviour is due to this logic
> <https://github.com/openjdk/jdk/blob/09b88098ff544fec1a4e94bfbbdc21b6c8433abb/src/java.base/share/classes/java/lang/reflect/Executable.java#L344-L345> in
> Executable#getAllGenericParameterTypes (which is used by
> Parameter#getParameterizedType):
>
> // If we hit a synthetic or mandated parameter,
> // use the non generic parameter info.
>
> On Tue, Apr 23, 2024 at 12:47 PM Patrick Doyle <p.r.doyle at gmail.com>
> wrote:
>
>> Thanks, Archie. I've submitted the bug report to bugs.java.com.
>> --
>> Patrick Doyle
>> p.r.doyle at gmail.com
>>
>>
>> On Tue, Apr 23, 2024 at 3:29 PM Archie Cobbs <archie.cobbs at gmail.com>
>> wrote:
>>
>>> Hi Patrick,
>>>
>>> If it's just a normal bug, file it at https://bugs.java.com/bugdatabase/
>>> and it will eventually get triaged over to https://bugs.openjdk.org/
>>>
>>> If it's a language question, e.g., a suggestion for some minor
>>> improvement, this list would be appropriate.
>>>
>>> -Archie
>>>
>>> On Tue, Apr 23, 2024 at 1:38 PM Patrick Doyle <p.r.doyle at gmail.com>
>>> wrote:
>>>
>>>> Hi all,
>>>>
>>>> Is this the wrong place to report bugs like this? What would be the
>>>> right place?
>>>>
>>>> Thanks,
>>>> --
>>>> Patrick Doyle
>>>> p.r.doyle at gmail.com
>>>>
>>>>
>>>> On Mon, Feb 19, 2024 at 8:52 AM Patrick Doyle <p.r.doyle at gmail.com>
>>>> wrote:
>>>>
>>>>> Hi all,
>>>>>
>>>>> I have a JUnit5 test case that demonstrates that if you use the
>>>>> compact constructor syntax in a record, the reflection info will be missing
>>>>> generic type information. Implicit constructors work fine, as do explicit
>>>>> canonical constructors.
>>>>>
>>>>> I found this on Temurin 21.0.2 and the Adoptium project suggested I
>>>>> post here.
>>>>>
>>>>> The unit test can be found in the Adoptium bug report:
>>>>> https://github.com/adoptium/adoptium-support/issues/1025
>>>>>
>>>>> Let me know if there's anything I can do to help.
>>>>>
>>>>> Thanks,
>>>>> --
>>>>> Patrick Doyle
>>>>> p.r.doyle at gmail.com
>>>>>
>>>>
>>>
>>> --
>>> Archie L. Cobbs
>>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/amber-dev/attachments/20240424/8a5b7629/attachment.htm>
More information about the amber-dev
mailing list