Nested structs documentation broken
Describe the bug
//!\brief A.
template <typename t_>
struct A
{
struct B;
};
//!\brief B.
template <typename t>
struct A<t>::B
{
using A_type = A<t>; //!< Foo.
struct C;
};
//!\brief C.
template <typename t>
struct A<t>::B::C
{
friend struct B;
C() = default; //!< Defaulted.
};
With
-EXTRACT_ALL = NO
+EXTRACT_ALL = YES
-GENERATE_LATEX = YES
+GENERATE_LATEX = NO
There are three directories in the attached example:
html_working: Expected output, doxygen 1.12.0html_with_error: Actual output, doxygen trunkhtml_no_error: Output withtypename tinstead oftypename t_, doxygen trunk
html_working has one page for each struct and all members are documented.
html_with_error has one page for each struct, but no members are documented.
html_no_error has all structs redirect to A and no members are documented.
I found two ways to silence the error. However, the documentation is still broken:
template <typename t_>->template <typename t>forstruct A- Remove
using A_type = A<t>;instruct B
The error for html_with_error is:
error: FileDefImpl::insertMembers(): member 'B' with class scope '<global>' inserted in file scope 'example.hpp'!
And there is also a warning:
warning: documented symbol 'A< t_ >::B::C::C' was not declared or defined.
The other two versions have no warnings or errors.
Screenshots I uploaded the three builds temporarily:
Overview html_working html_with_error html_no_error
To Reproduce example.tar.gz
Expected behavior
Should look like with doxygen 1.12.0
It also shouldn't matter whether it's typename t_ or typename t for struct A.
Version The error message occurs since f4fc9a55898dd12167135fe0cbf228418e89d0f8 The broken documentation existed before that, I did not bisect it, but it works as expected with doxygen 1.12.0.
@eseiler
I assume you mean e.g. the missing friend and constructor/ destructor information on the page regarding A< t_ >::B::C Struct Reference (html/struct_a_1_1_b_1_1_c.html)
Maybe we have 2 problems but it is also possible that the first problem (missing information) is causing the second problem (warnings) therefore first the missing information should be solved as this looks like to be introduced by:
Commit: ef4065af3fb3b6a73b6d919a05f02a170880fefe [ef4065a]
Date: Sunday, September 22, 2024 9:45:57 PM
issue #11144 Template relation doesn't appear on graph
which is before the warnings appeared.
@eseiler I assume you mean e.g. the missing friend and constructor/ destructor information on the page regarding
A< t_ >::B::C Struct Reference(html/struct_a_1_1_b_1_1_c.html)
Yes
This issue is still present on the current master (33a89a6668ac70ebc8971a69423c030698998967)