On Wed, 11 Mar 2026 18:17:43 GMT, Jorn Vernee <[email protected]> wrote:

>> In the Java Platform, most bootstrap method declarations are declared in 
>> Java source code. Each of these bootstrap method need to refer to the 
>> bootstrap method mechanism, which makes documentation repetitive, and not 
>> straightforward when seen from source code. This demand came out of recent 
>> PR reviews like #30067.
>> 
>> We can introduce documented annotations so the bootstrap method role becomes 
>> straightforward. The Java compilers can also emit warnings for these 
>> annotations to make sure the annotated declarations are not definitely 
>> illegal.
>> 
>> In this RFE, javac will provide basic warnings under the new "bsm" lint 
>> category to validate these annotations for source levels 27 and above. The 
>> lint category will be on by default, and won't affect `-Xlint:all` usages 
>> for source levels 26 and below.
>
> src/java.base/share/classes/java/lang/invoke/ConstantBootstrap.java line 46:
> 
>> 44:  *     if the declaration is an instance method.  The arguments can be
>> 45:  *     variable-arity.
>> 46:  * <li>The first argument type is exactly {@link MethodHandles.Lookup}.
> 
> Why is there a difference here with CallsiteBootrap for MethodHandles.Lookup? 
> It looks like the implementation checks assignability for both.

So indy bootstrap can have `(Object, Object...)` but that's illegal for condy. 
Condy's 1st arg must be declared exactly `MethodHandles.Lookup`.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/30125#discussion_r2920432935

Reply via email to