On Tue, 3 Sep 2024 01:58:59 GMT, Chen Liang <li...@openjdk.org> wrote:

>> The test is inspired from [FFM API's 
>> TestNulls](https://github.com/openjdk/jdk/blob/master/test/jdk/java/foreign/TestNulls.java),
>>  I customized their Null checking framework it to work with ClassFile API.
>> 
>> The framework for for testing an API in bulk, so that all methods are 
>> reflectively called with some values replaced with nulls, so that all 
>> combinations are tried.
>> 
>> This test reveals some inconsistencies in the ClassFile API, whether it's a 
>> method with nullable arguments`[1]`, nulls are passed to`[2]` or its 
>> implementation handles nulls `[3]` `[4]`.
>> 
>> 
>> `[1]:` 
>> [ModuleRequireInfo#of](https://github.com/openjdk/jdk/blob/25e03b52094f46f89f2fe8f20e7e5622928add5f/src/java.base/share/classes/java/lang/classfile/attribute/ModuleRequireInfo.java#L89)
>> `[2]:` 
>> [Signature$ClassTypeSig#of](https://github.com/openjdk/jdk/blob/7ad61605f1669f51a97f4f263a7afaa9ab7706be/src/java.base/share/classes/java/lang/classfile/Signature.java#L150)
>> `[3]:`  
>> [CatchBuilderImpl#catching](https://github.com/openjdk/jdk/blob/7ad61605f1669f51a97f4f263a7afaa9ab7706be/src/java.base/share/classes/jdk/internal/classfile/impl/CatchBuilderImpl.java#L55)
>> `[4]:` 
>> [CodeBuilder#loadConstant](https://github.com/openjdk/jdk/blob/7ad61605f1669f51a97f4f263a7afaa9ab7706be/src/java.base/share/classes/java/lang/classfile/CodeBuilder.java#L615)
>> 
>> 
>> 
>> `test/jdk/jdk/classfile/TestNullHostile.java#EXCLUDE_LIST` has the list of 
>> methods that are still not null hostile, they are ignored by the test, as 
>> making them null hostile either breaks some tests (listed below) or breaks 
>> the build with a `NullPointerException` or `BootstapMethodError`. I will 
>> paste the relevant methods from that list here.
>> 
>> Tests broken by these methods are :
>> 
>> 
>> jdk/classfile/VerifierSelfTest.java
>> jdk/classfile/TestRecordComponent.java
>> jdk/classfile/TestNullHostile.java   
>> jdk/classfile/OpcodesValidationTest.java
>> jdk/classfile/ClassPrinterTest.java
>> java/lang/invoke/MethodHandlesGeneralTest.java       
>> java/lang/invoke/MethodHandleProxies/WrapperHiddenClassTest.java
>> java/lang/invoke/MethodHandleProxies/WithSecurityManagerTest.java    
>> java/lang/invoke/MethodHandleProxies/BasicTest.java
>> 
>> 
>> Full list of methods
>> 
>> 
>> //the implementation of this method in CatchBuilderImpl handles nulls, is 
>> this fine?
>> "java.lang.classfile.CodeBuilder$CatchBuilder/catching(java.lang.constant.ClassDesc,java.util.function.Consumer)/0/0",
>> 
>> // making this method null-hostile causes a BootstapMethodError during the 
>> the...
>
> test/jdk/jdk/classfile/testdata/TestClass.java line 1:
> 
>> 1: package testdata;
> 
> File seems redundant? Or did you forget to upload the test driver?

I thought I removed `testClass.java` as I no longer use it.

I will include a regression test tomorrow with the next patch.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/20556#discussion_r1741345363

Reply via email to