inline record ref projection contains an empty record attribute
chris.hegarty at oracle.com
Mon Dec 7 16:56:58 UTC 2020
> On 7 Dec 2020, at 16:25, Remi Forax <forax at univ-mlv.fr> wrote:
> ----- Mail original -----
>> De: "Srikanth" <srikanth.adayapalam at oracle.com>
>> À: "valhalla-dev" <valhalla-dev at openjdk.java.net>
>> Cc: "Jim Laskey" <james.laskey at oracle.com>
>> Envoyé: Lundi 7 Décembre 2020 08:27:39
>> Objet: Re: inline record ref projection contains an empty record attribute
>> Hi Remi,
> Hi Srikanth, hi Jim,
>> Thanks for the problem report.
>> https://bugs.openjdk.java.net/browse/JDK-8251041 tracks the issues
>> relating to inline records.
>> We know of quite a few issues. (including reported by you in the past) -
>> Jim is looking into these.
> my main blocking point actually is that the reflection API checks if a class is a record using getSuperclass() == j.l.Record.class
I do not have a reference to hand, but the requirement for Class::isRecord to check that j.l.Record is a the direct superclass was requested during one of the umbrella records CSRs. There was a concern that the reflective APIs could be “fooled” into thinking that a particular j.l.Class is a record class when it is in fact largely not in a record class, as outlined by the JLS.
> instead of isAssignableFrom (or mark all classes that inherits directly or indirectly from java.lang.Record if perf is an issue).
If isAssignableFrom is sufficient ( now that isRecord asserts finalness ), then maybe both the JLS and reflection should be updated. It might be best to bring this up on the Amber list.
More information about the valhalla-dev