struct _ExampleStruct
_ForwardA::_ForwardA
a::Ptr{_ForwardA}
end
Now we don't have that weird spurious _ForwardA::_ForwardA field.
It happened to me while wrapping a larger header (winuser.h) using this pattern, but I couldn't come up with a minimal reproducer. For some reason, fields(Clang.getCursorType(cursor)) for _ExampleStruct was empty in that larger header and Clang.jl fell back to using children to extract fields, while in any example I have tried for a minimal reproducer fields(Clang.getCursorType(cusor)) succeeded in returning the only field present as expected.
Unhandled non-field child nodes were sometimes present in
children(cursor)
, and were already handled in printing but not in codegen, which triggered an assertion error at https://github.com/JuliaInterop/Clang.jl/blob/30aaa5de6be51c105dc80139533d0db67263b762/src/generator/print.jl#L119where
fields
built from the codegened expression had an extra field for a forward struct declaration.Here is an exemple header where the error appeared:
and codegen produced something like
Now we don't have that weird spurious
_ForwardA::_ForwardA
field.It happened to me while wrapping a larger header (
winuser.h
) using this pattern, but I couldn't come up with a minimal reproducer. For some reason,fields(Clang.getCursorType(cursor))
for_ExampleStruct
was empty in that larger header and Clang.jl fell back to usingchildren
to extract fields, while in any example I have tried for a minimal reproducerfields(Clang.getCursorType(cusor))
succeeded in returning the only field present as expected.