On Thu, 26 May 2022 22:01:56 GMT, liach <d...@openjdk.java.net> wrote:

>> src/java.base/share/classes/java/lang/reflect/Proxy.java line 513:
>> 
>>> 511: 
>>> 512:                     if (!module.isOpen(pkg, Proxy.class.getModule())) {
>>> 513:                         // Required for default method invocation
>> 
>> Is this comment true? 
>> 
>> The module of the proxy class opens the package to `java.base` if the proxy 
>> interface is non-public in a named module or if all proxy interfaces are 
>> public but a proxy interface is not unconditionally exported.
>
> The original check and `Modules.addOpen` calls were added in 
> [8159476](https://bugs.openjdk.java.net/browse/JDK-8159746), when the 
> `invokeDefault` support was added.
> 
> See: 
> https://github.com/openjdk/jdk/commit/56b15fbbcc7c04252f2712d859ff7b820b7c79ad#diff-c15cc774a95bac204c294b9ca8e20332c81904e506e16bb7d5a82d1c30cced17R667,
>  or #313

Ah, I see. That assert was added in PR #313 as a clarification to the current 
proxy implementation but not required by the `InvocationHandle::invokeDefault`. 
  It could have been added before the default method support.

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

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

Reply via email to