RFR: 7903609: Jextract can not handle some anonymous nested structs [v2]
    Jorn Vernee 
    jvernee at openjdk.org
       
    Wed Dec 13 18:47:58 UTC 2023
    
    
  
On Wed, 13 Dec 2023 18:38:05 GMT, Jorn Vernee <jvernee at openjdk.org> wrote:
>> E.g.
>> 
>> public static OptionalLong recordMemberOffset(Declaration member) {
>>         if (member instanceof Variable) {
>>             return ClangOffsetOf.get(member);
>>         } else {
>>             // anonymous struct
>>             Optional<Declaration> firstDecl = ((Scoped)member).members().stream().findFirst();
>>             return firstDecl.isEmpty() ?
>>                     OptionalLong.empty() :
>>                     recordMemberOffset(firstDecl.get());
>>         }
>>     }
>> 
>> 
>> Can't the `else` be simplified to look for the offset in the AnonStruct attribute? Or call your new function?
>
> Right... I could simplify the check in UnsupportedFilter to look at the off in the attribute directly, instead of going through `recordMemberOffset`. I think in that case we can also simplify `recordMemberOffset` to return a `long` unconditionally.
Addressed in: https://github.com/openjdk/jextract/pull/159/commits/cd00d68d0f0e08912ed358211a663a0fe6274ccb
`recordMemberOffset` is then just used when computing the layout string, so I've move the method to StructBuilder as well.
-------------
PR Review Comment: https://git.openjdk.org/jextract/pull/159#discussion_r1425749980
    
    
More information about the jextract-dev
mailing list