I have bcc'ed jdk-dev and add core-libs-dev mailing list where this
thread should be discussed.
The spec says:
"When dropping|PACKAGE|then the resulting lookup will not
have|PACKAGE|or|PRIVATE|access.When dropping|MODULE|then the resulting
lookup will not have|MODULE|,|PACKAGE|, or|PRIVATE|access. If|PUBLIC|is
dropped then the resulting lookup has no access."
@throws IAE if modeToDrop is a valid mode.
I found the spec is quite clear that there is no condition to require
the modeToDrop must exist.
Mandy
[1] https://bugs.openjdk.java.net/browse/JDK-8226916
On 3/9/20 3:06 AM, Andrew Leonard wrote:
Thank you Mandy for raising the bug, I have one more query please, we
may want to add to the bug that I am not sure about:
*testDropLookupMode*() in
test/jdk/java/lang/invoke/modules/m3/jdk/test/ModuleAccessTest.java:
public void testDropLookupMode() throws Exception {
Lookup lookup = MethodHandles.privateLookupIn(m5.type1, m4.lookup);
assertTrue((lookup.lookupModes() & MODULE) == 0); <--- MODULE
doesn't exist
...
Lookup lookup3 = lookup.dropLookupMode(MODULE);
---> assertTrue(lookup3.lookupModes() == (lookup.lookupModes() &
~(PROTECTED|PRIVATE|PACKAGE)));
Based on the expected result above, does it mean PRIVATE, PACKAGE
should be dropped whether
or not MODULE exists in the access mode (PROTECTED is dropped by
default) ?
If so, the document should be updated to explicitly clarify the
exception case?
Thanks,
Andrew
Andrew Leonard
Java Runtimes Development
IBM Hursley
IBM United Kingdom Ltd
internet email: andrew_m_leon...@uk.ibm.com
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