Hi Mandy, Food for thought:
- From John's email, it looked like he was advocating a clarification change to the spec (which requires no CSR). - A test case is attached to the bug. It displays "current behaviour", but doesn't show a clear "pass" or "fail", because at the start of this there appeared to be disagreement over what the correct behaviour was. - Good idea on the new line. I'll add it to the webrev shortly. - As for the comments, I think I see what John was going for, but I don't understand his first change. This seems to be the opposite of what we're trying for here. + * In the case of a field setter function on a {@code final} field, + * finality enforcement is treated as a kind of access control, + * and the lookup will fail, except in special cases of + * {@link Lookup#unreflectSetter Lookup.unreflectSetter}. Perhaps he means it will still fail, but for the reasons we've discussed rather than anything connected to access control? Best Regards Adam Farley IBM Runtimes Mandy Chung <mandy.ch...@oracle.com> wrote on 16/01/2019 23:52:03: > From: Mandy Chung <mandy.ch...@oracle.com> > To: Adam Farley8 <adam.far...@uk.ibm.com> > Cc: core-libs-dev <core-libs-dev@openjdk.java.net> > Date: 16/01/2019 23:54 > Subject: Re: RFR: JDK-8216558: Lookup.unreflectSetter(Field) fails > to throw IllegalAccessException for final fields > > Hi Adam, > On 1/14/19 9:10 AM, Adam Farley8 wrote: > As for the CSR process, I'm unfamiliar with it. I've modified the > comment for the unreflectSetter method in the webrev. Do let me know if > more needs to be done. > > The CSR process is straight-forward. CSR FAQ [1] may help you get started. > > As for the fix, John has suggested the spec wording for this issue. > It's fine with the unreflectField method to have the explicit check > and throw field.makeAccessException(...). The exception message > could match the proposed spec wording like: > if(isSetter && field.isStatic() && field.isFinal()) > throw field.makeAccessException("static final field has no > write access", this); > > You have a very long line and the throw statement can start in the > next line. > > In addition, please include a test case for this change. > > Thanks > Mandy > [1] https://wiki.openjdk.java.net/display/csr/CSR+FAQs Unless stated otherwise above: IBM United Kingdom Limited - Registered in England and Wales with number 741598. Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU